2010-05-11 20 views
7

वर्तमान में मेरे पूरे काम चक्र है:स्काला सरल डमी परियोजना

  1. संपादित foo.scala
  2. FSC foo.scala & & स्केला -cp।

FooMain लेकिन मेरी परियोजना बड़ा हो रही है और मुझे लगता है, फ़ाइलों को विभाजित इकाई परीक्षण बनाने, आदि चाहते हैं लेकिन मैं एसबीटी प्रलेखन पढ़ने और कर जो कुछ भी एक एसबीटी के प्राप्त करने के लिए किया जाना चाहिए के लिए बहुत आलसी हूँ " makefile "। इसी तरह यूनिट परीक्षणों के लिए (बहुत सारे ढांचे हैं, जो चुनने के लिए हैं?)

मेरा दिन एसबीटी का उपयोग करके एक डमी यूनिट परीक्षण के साथ एक साधारण ज़िप्ड डमी प्रोजेक्ट है।

क्या आप जानते हैं कि ऐसी चीज मौजूद है या नहीं?

+0

बस स्कैला प्रोजेक्ट के लिए एक और टेम्पलेट जोड़ा गया, इस बार केवल मेवेन पर आधारित है। – VonC

+0

मुझे समझ में नहीं आ रहा है: मेरे उत्तर का पहला भाग एसबीटी के उपयोग की वकालत करता है, सिवाय इसके कि यह * टेम्पलेट * एसबीटी परियोजना के साथ आता है, जो पहले से तैयार है, परीक्षण के साथ पूरा हो। उसमें क्या गलत था? इसके अलावा, पूरा होने के लिए, मैंने कई मेवेन टेम्पलेट परियोजनाओं को भी जोड़ा। – VonC

+0

आपका उत्तर और परियोजना बहुत अच्छी है। लेकिन मेरी ज़रूरत सिर्फ मैनुअल के अनुसार एसबीटी का उपयोग करके पूरी की जाती है, एसबीटी परियोजना बनाने और मेरे लिए परीक्षण करने के लिए और कुछ भी जरूरी नहीं है। –

उत्तर

9

ठीक है, आप एसबीटी का उपयोग करना चाहिए। आपको इसके लिए कुछ भी लिखने की आवश्यकता नहीं है: यह आपको मूलभूत परियोजना के लिए आवश्यक सब कुछ तैयार करेगा, और केवल आपको पूछेगा कि परियोजना का नाम क्या है और आप किस स्केल का उपयोग करेंगे।

उसके बाद, बस फ़ाइलों को सही जगहों पर रखें। निर्देशिका लेआउट देखें, हालांकि संक्षिप्त उत्तर src/main/scala में मुख्य स्रोत फ़ाइलें हैं और src/test/scala में परीक्षण स्रोत फ़ाइलें हैं। आप को परीक्षण पुस्तकालय प्राप्त करने के लिए बहुत छोटा "मेकफ़ाइल" बनाना होगा, हालांकि।

+1

अच्छी मार्गदर्शिका: http://code.google.com/p/simple-build-tool/wiki/Setup –

9

अपडेट किया गया जवाब (2016)

इन दिनों, तुम Giter8 परियोजना, एसबीटी के लॉन्चर संस्करण 0.13.13 या इसके बाद के संस्करण, and its command new के साथ संयुक्त है।

sbt new ... 

मूल जवाब (2010)

हाँ, इस तरह के एक टेम्पलेट परियोजना, एसबीटी के आधार पर, स्केला परीक्षण के साथ पूरा, मौजूद है:

Get Started With Scala, Sbt And Eclipse और उसके template project देखते हैं।

  • 1) एसबीटी कंसोल से एसबीटी-कंसोल-टेम्पलेट
 
    % git clone git://github.com/mgutz/sbt-console-template.git your-project 
  • 2) से क्लोन या डाउनलोड/निकालने स्रोत
 
     # update dependencies 
     > update 

     # run project 
     > run 

     # test project continuously 
     > ~test 

     # eclipsify 
     > eclipse 

("ग्रहण" भाग वैकल्पिक है, और केवल तभी यदि आप अपने एसबीटी परियोजना से स्कैला ग्रहण परियोजना उत्पन्न करना चाहते हैं)


एक और स्काला टेम्पलेट परियोजना:

+-scalajavatut/ 
    +-pom.xml 
    +-src/ 
    | +-main/ 
    | | +-java/ 
    | | | +-de/ 
    | | | +-mackaz/ 
    | | |  +-HelloScala.java 
    | | +-scala/ 
    | | +-de/ 
    | |  +-mackaz/ 
    | |  +-App.scala 
    | +-test/ 
    | +-scala/ 
    |  +-de/ 
    |  +-mackaz/ 
    |   +-AppTest.scala 
    |   +-MySpec.scala 

और निम्नलिखित pom.xml:

Build a mixed Scala 2.8/Java application from scratch with Maven

यह निम्न टेम्पलेट का उपयोग करता है (यहाँ zip file with the full Maven-Scala project है)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>de.mackaz</groupId> 
    <artifactId>tutorial1</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <inceptionYear>2008</inceptionYear> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <scala.version>2.8.0-SNAPSHOT</scala.version> 
    </properties> 

    <repositories> 
    <repository> 
     <id>scala-tools.org</id> 
     <name>Scala-Tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-releases</url> 
    </repository> 

    <!-- Scala 2.8 Latest --> 
    <repository> 
     <id>scala-tools.org.snapshots</id> 
     <name>Scala Tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-snapshots</url> 
     <snapshots /> 
    </repository> 

    </repositories> 

    <pluginRepositories> 
    <pluginRepository> 
     <id>scala-tools.org</id> 
     <name>Scala-Tools Maven2 Repository</name> 
     <url>http://scala-tools.org/repo-releases</url> 
    </pluginRepository> 
    </pluginRepositories> 

    <dependencies> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>${scala.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.4</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Specs (Behavior Driven Testing through JUnit) --> 
    <dependency> 
    <groupId>org.scala-tools.testing</groupId> 
    <artifactId>specs</artifactId> 
    <version>1.6.1-2.8.0.Beta1-RC1</version> 
    <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.scala-tools</groupId> 
     <artifactId>maven-scala-plugin</artifactId> 
     <version>2.13.1</version> 
     <executions> 
      <execution> 
      <id>compile</id> 
      <goals><goal>compile</goal></goals> 
      <phase>compile</phase> 
      </execution> 
      <execution> 
      <id>test-compile</id> 
      <goals><goal>testCompile</goal></goals> 
      <phase>test-compile</phase> 
      </execution> 
      <execution> 
      <phase>process-resources</phase> 
      <goals><goal>compile</goal></goals> 
      </execution> 
     </executions> 
     <configuration> 
      <scalaVersion>${scala.version}</scalaVersion> 
      <launchers> 
      <launcher> 
       <id>myLauncher</id> 
       <mainClass>de.mackaz.App</mainClass> 
      </launcher> 
      </launchers> 
      <args> 
      <arg>-target:jvm-1.5</arg> 
      <!-- to support mix java/scala only --> 
      <arg>-make:transitivenocp</arg> 
      <arg>-dependencyfile</arg> 
      <arg>${project.build.directory}/.scala_dependencies</arg> 
      </args> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-eclipse-plugin</artifactId> 
     <configuration> 
      <downloadSources>true</downloadSources> 
      <buildcommands> 
      <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand> 
      </buildcommands> 
      <additionalProjectnatures> 
      <projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature> 
      </additionalProjectnatures> 
      <classpathContainers> 
      <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer> 
      <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer> 
      </classpathContainers> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.scala-tools</groupId> 
     <artifactId>maven-scala-plugin</artifactId> 
     <configuration> 
      <scalaVersion>${scala.version}</scalaVersion> 
     </configuration> 
     </plugin> 
    </plugins> 
    </reporting> 
</project> 

आप के साथ इसे चला सकते हैं:

:

mvn scala:run 

और आउटपुट के अंत में आप

[INFO] launcher 'myLauncher' selected => de.mackaz.App 
Hello from Java 
Scala says: Hello from Scala! 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 7 seconds 
[INFO] Finished at: Wed Mar 24 18:14:22 CET 2010 
[INFO] Final Memory: 14M/33M 
[INFO] ------------------------------------------------------------------------ 

में Fanf's blog, Francois Armand प्रस्तुत देखना चाहिए

Maven2 bootstrap pom.xml for Scala with SLF4J and no-commons-logging

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>org.test</groupId> 
<artifactId>test</artifactId> 
<packaging>jar</packaging> 

<version>0.1-SNAPSHOT</version> 

<properties> 
    <!-- UTF-8 for everyone --> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 

    <!-- Other general properties --> 
    <slf4j-version>1.6.0</slf4j-version> 
    <logback-version>0.9.20</logback-version> 
    <scala-version>2.8.0.RC2</scala-version> 
    <scala-maven-plugin-version>2.13.1</scala-maven-plugin-version> 
    </properties> 

<description> 
    Starting pom 
</description> 

<repositories> 
    <repository> 
    <id>scala-tools.org</id> 
    <name>Scala-tools Maven2 Repository</name> 
    <url>http://scala-tools.org/repo-releases</url> 
    </repository> 
    <repository> 
    <id>scala-snapshots.org</id> 
    <name>Scala-tools Maven2 Repository snapshots</name> 
    <url>http://scala-tools.org/repo-snapshots</url> 
    </repository> 

    <repository> 
    <id>no-commons-logging</id> 
    <name>No-commons-logging Maven Repository</name> 
    <layout>default</layout> 
    <url>http://no-commons-logging.zapto.org/mvn2</url> 
    <snapshots><enabled>false</enabled></snapshots> 
    </repository> 

</repositories> 

<pluginRepositories> 
    <pluginRepository> 
    <id>scala-tools.org</id> 
    <name>Scala-tools Maven2 Repository</name> 
    <url>http://scala-tools.org/repo-releases</url> 
    <snapshots><enabled>false</enabled></snapshots> 
    </pluginRepository> 
    <pluginRepository> 
    <id>scala-snapshots.org</id> 
    <name>Scala-tools Maven2 Repository snapshots</name> 
    <url>http://scala-tools.org/repo-snapshots</url> 
    </pluginRepository> 
</pluginRepositories> 

<build> 
    <sourceDirectory>src/main/scala</sourceDirectory> 
    <testSourceDirectory>src/test/scala</testSourceDirectory> 
    <plugins> 
    <plugin> 
    <groupId>org.scala-tools</groupId> 
    <artifactId>maven-scala-plugin</artifactId> 
    <version>${scala-maven-plugin-version}</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>compile</goal> 
     <goal>testCompile</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <args> 
     <arg>-target:jvm-1.5</arg> 
     <arg>-make:transitivenocp</arg> 
     <arg>-dependencyfile</arg> 
     <arg>${project.build.directory}/.scala_dependencies</arg> 
    </args> 
    <jvmArgs> 
     <jvmArg>-client</jvmArg> 
     <jvmArg>-Xmx1G</jvmArg> 
    </jvmArgs> 
    </configuration> 
    </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <source>1.6</source> 
    </configuration> 
    </plugin> 

    </plugins> 
</build> 

<dependencies> 
    <dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-library</artifactId> 
    <version>${scala-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>joda-time</groupId> 
    <artifactId>joda-time</artifactId> 
    <version>1.6</version> 
    </dependency> 
    <!-- test --> 
    <dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.7</version> 
    <scope>test</scope> 
    </dependency> 


    <!-- 
    All the following is related to our will to NOT use Commong-logging 
    --> 
    <!-- use no-commons-logging --> 
    <dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>99.0-does-not-exist</version> 
    </dependency> 
    <!-- no-commons-logging-api, if you need it --> 
    <dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging-api</artifactId> 
    <version>99.0-does-not-exist</version> 
    </dependency> 
    <!-- the slf4j commons-logging replacement --> 
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>${slf4j-version}</version> 
    </dependency> 
    <!-- the other slf4j jars --> 
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>${slf4j-version}</version> 
    </dependency> 
    <!-- using slf4j native backend --> 
    <dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-core</artifactId> 
    <version>${logback-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>${logback-version}</version> 
    </dependency> 
</dependencies> 
</project> 
+0

धन्यवाद। मुझे लगता है कि यह होना चाहिए: गिट: //github.com/mgutz/sbt-console-template.git –

+0

@ लुकसज़: सत्य। मैंने सही गिट रेपो पते को प्रतिबिंबित करने के उत्तर में संशोधन किया है। – VonC