Frage

Zur Zeit meines ganzer Arbeitszyklus ist:

  1. bearbeiten foo.scala
  2. fsc foo.scala && scala -cp. FooMain

Aber mein Projekt wird immer größer, und ich würde zu Split-Dateien wie, Tests machen Einheit usw. Aber ich bin zu faul für sbt Dokumentation zu lesen und zu tun, was getan werden muss, einen „Makefile“ von SBT zu bekommen. Ähnliches gilt für Unit-Tests (es gibt so viele Frameworks, die wählen?)

Was würde meinen Tag machen ist ein einfaches Zip-Dummy-Projekt mit einem Dummy-Unit-Tests unter Verwendung von SBT.

Haben Sie wissen, ob so etwas gibt?

War es hilfreich?

Lösung

Nun, Sie sollte Verwendung SBT. Sie müssen nicht für sie zu schreiben etwas brauchen. Es alles schaffen Sie für ein einfaches Projekt benötigen, und Sie nur fragen, was der Projektname ist und welche Version von Scala Sie verwenden werden

Danach setzen Sie einfach die Dateien an den richtigen Stellen. Suchen Sie das Verzeichnis, das Layout auf, obwohl die kurze Antwort ist Hauptquelldateien in src/main/scala und Test-Quelldateien in src/test/scala. Sie wird haben einen sehr kleinen "Make-Datei" zu schaffen, in einer Testbibliothek zu erhalten, though.

Andere Tipps

aktualisiert Antwort (2016)

In diesen Tagen haben Sie die Giter8 Projekt, kombiniert mit SBT Launcher Version 0.13.13 oder höher, und seinen Befehl new .

sbt new ... 

Original Antwort (2010)

Ja, eine solche Vorlage Projekt, basierend auf sbt, komplett mit scala Tests besteht:

finden Sie unter Erste Schritte mit Scala, Sbt und Eclipse und seine Vorlagenprojekt .

  • 1) Clone OR download / Extrakt Quelle von sbt-console-Vorlage
    % git clone git://github.com/mgutz/sbt-console-template.git  your-project
  • 2) Von sbt Konsole
       # update dependencies
       > update

       # run project
       > run

       # test project continuously
       > ~test

       # eclipsify
       > eclipse

(der „Eclipse“ Teil ist optional, und hier nur, wenn Sie ein Scala Eclipse-Projekt von Ihrem sbt Projekt generieren mögen)


Ein weiteres Scala Vorlagenprojekt:

Aufbau einer gemischten Scala 2.8 / Java-Applikation von Grund auf neu mit Maven

Es verwendet die folgende Schablone (hier ist das Zip-Datei mit dem vollständigen Maven-Scala Projekt ):

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

Und die folgende pom.xml:

<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>

Sie können es laufen mit:

mvn scala:run
  

und am Ende der Ausgabe sollten Sie sehen,

[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 Blog , Francois Armand präsentiert:

Maven2 Bootstrap pom.xml für Scala mit SLF4J und 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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top