Search code examples
scalamavenclojuremaven-3

Creating the most basic Scala project with Maven?


I use Maven 3 to create a new Scala project. As far as I understand, the way to create a new project with Maven is by:

mvn archetype:generate

Maybe I'm missing out something, but I couldn't find even one option that offers the simplest Scala project (like the one received by lein new app ... for Clojure, for example). Any help here?


Solution

  • You should be able to use mvn archetype:generate. You can choose, e.g., org.scala-tools.archetypes:scala-archetype-simple. You need to put in the number number next to the archetype name in the output of your mvn archetype:generate command because the numbering can change over time. There are also other options like eu.stratosphere:quickstart-scala as documented in this article.

    They may be somewhat outdated, though. I personally prefer writing my pom.xml files manually. For reference, here is a minimal pom file for use with Scala 2.11.6 and Scalatest 2.2.5:

    <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>com.example</groupId>
      <artifactId>my-artifact</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <properties>
        <encoding>UTF-8</encoding>
        <scala.version>2.11.6</scala.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.scala-lang</groupId>
          <artifactId>scala-library</artifactId>
          <version>${scala.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.scalatest</groupId>
          <artifactId>scalatest_2.11</artifactId>
          <version>2.2.5</version>
          <scope>compile</scope>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.15.2</version>
            <executions>
              <execution>
                <goals>
                  <goal>compile</goal>
                  <goal>testCompile</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    
          <plugin>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest-maven-plugin</artifactId>
            <version>1.0</version>
            <configuration>
            </configuration>
            <executions>
              <execution>
                <id>test</id>
                <goals>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    
        </plugins>
    
      </build>
    </project>