Compiling Scala sources

Prerequis : common usages

Compiling

Place scala sources files in :

src/main/scala

Place scala test sources files in :

src/test/scala

Then use the standard maven phases :

          
# compile only
mvn compile
# or compile and test
mvn test
# or compile, test and package
mvn package
       
        

Or the plugin specifics goal :

          
# compile source
mvn scala:compile
# compile test
mvn scala:testCompile
       
        

Or if you want to compile only source (from main and test) without calling previous phases like check resources, generate-sources,... :

          
# compile source and test with fsc
mvn scala:cc -Donce=true
# compile source and test with scalac
mvn scala:cc -Donce=true -Dfsc=false
       
        
WARNING:
  • This feature is provide for integration with editor.
  • using once and fsc => reuse server if previously started else start a new one but never stop it (except if you call scala:cc without -Donce=true, or if you kill the process yourself)

Increasing memory

        
<project>
  ...
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <jvmArgs>
            <jvmArg>-Xms64m</jvmArg>
            <jvmArg>-Xmx1024m</jvmArg>
          </jvmArgs>
        </configuration>
      </plugin>
  ...
</project>
            
      

Emacs user

If you are an emacs user, you could try the to run the compilation with "-DemacsMode=true" then compilation error will be displayed without [WARNING] at the begin of the line like :

[INFO] Compiling 1 source files to /home/dwayne/work/oss/scala-tools/vscaladoc/target/classes
[WARNING] Compilation failure

/project/src/main/scala/org/example/Main.scala:12: error: expected class or object definition
foo()
^
one error found