Running a "main(args: Array[String])"

You must have a well define project, and it must compile your code successfully before (see Compiling ).

Running

So you can now run your scala app by defining the "mainClass" property :

mvn scala:run -DmainClass=org.example.MyClass

Using Launcher

You need to use launchers if you :

  • need to specify args and/or jvmArgs that are different from the main configuration
  • run and run again the same "configuration"/command line
  • want to store, some configuration for later user, or for sharing with other
<plugin>
  <groupId>maven</groupId>
  <artifactId>scala-maven-plugin</artifactId>
  <configuration>
    <launchers>
      <launcher>
        <id>foo</id>
        <mainClass>org.example.MyClass</mainClass>
        <!-- args are optional -->
        <args>
          <arg>arg1</arg>
        </args>
        <!-- jvmArgs are optional -->
        <jvmArgs>
          <jvmArg>-Xmx128m</jvmArg>
          <jvmArg>-Djava.library.path=...</jvmArg>
        </jvmArgs>
      </launcher>
      <!-- you could define other launcher -->
    </launchers>
  </configuration>
</plugin>

Now you can run the following command to run your launcher (the classpath used is the test classpath).

mvn scala:run -Dlauncher=foo

If you don't specify launcher or mainClass then the first launcher is used, in your case, the example below is equivalent to the example above.

mvn scala:run

If you need/which to specify some additional arguments at call time use "-DaddArgs=arg1|arg2|arg3" ('|' is used as separator)

Set the property 'displayCmd' to true, to display the command line used