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
<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>
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
It is common to wish to send arguments to the scalac compiler during compilation of your project. To do so, make use of the args configuration parameter like so:
<project>
...
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<configuration>
<args>
<arg>-unchecked</arg>
<arg>-deprecation</arg>
<arg>-explaintypes</arg>
</args>
</configuration>
</plugin>
...
</project>