Pregunta

En la actualidad mi ciclo de trabajo conjunto es:

  1. editar foo.scala
  2. fsc foo.scala && cp Scala. FooMain

Pero mi proyecto es cada vez más grande y me gustaría dividir archivos, pruebas unitarias maquillaje, etc. Pero soy demasiado perezoso para leer la documentación SBT y hacer lo que hay que hacer para conseguir "Makefile" del SBT. Del mismo modo para las pruebas unitarias (hay tantos marcos, que elegir?)

¿Qué haría que mi día es un proyecto ficticio con cremallera simple con un maniquí de pruebas unitarias utilizando SBT.

¿Usted sabe si existe tal cosa?

¿Fue útil?

Solución

Bueno, debe Uso de SBT. Usted no necesita nada de escritura para que:. Va a crear todo lo necesario para un proyecto básico, y sólo pedirle que lo que es el nombre del proyecto y qué versión de Scala que va a utilizar

Después de eso, sólo hay que poner los archivos en los lugares correctos. Busque la disposición de directorios, aunque la respuesta corta es principales archivos de código fuente en archivos src/main/scala y fuente de prueba en src/test/scala. Usted tiene que crear una pequeña "makefile" para obtener una biblioteca de prueba en el, sin embargo.

Otros consejos

Respuesta de Actualización (2016)

En estos días, que tienen la href="http://www.foundweekends.org/giter8/" rel="nofollow noreferrer"> Giter8 proyecto, combinado con lanzador versión del SBT 0.13.13 o superior, y su comando new .

sbt new ... 

Respuesta original (2010)

Sí, tal proyecto plantilla, basado en SBT, con pruebas Scala, existe:

empezar a trabajar con Scala, SBT y Eclipse y su plantilla de proyecto .

  • 1) Clone o descargar / extracto de fuente de SBT-consola-plantilla
    % git clone git://github.com/mgutz/sbt-console-template.git  your-project
  • 2) Desde la consola SBT
       # update dependencies
       > update

       # run project
       > run

       # test project continuously
       > ~test

       # eclipsify
       > eclipse

(la parte "Eclipse" es opcional, y sólo aquí, si desea generar un proyecto Eclipse Scala de su proyecto SBT)


Otro proyecto de plantilla Scala:

Construir una aplicación mixta Scala 2.8 / Java desde cero con Maven

Se utiliza la plantilla siguiente (en este caso es la archivo zip con la plena Maven-Scala proyecto):

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

Y la siguiente 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>

Se puede ejecutar con:

mvn scala:run
  

y al final de la salida debería ver

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

de FANF el blog , Francois Armand presentes:

Maven2 arranque pom.xml de Scala con SLF4J y 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top