Hi all,

First of all, just for those that aren't familiar, Scala is one of the family 
of languages that compiles to JVM bytecode. Arguably the most sophisticated of 
them.

I can't run my Scala unit tests with Maven (the unit test suite I'm using uses 
JUnit), and I think I know why, but I don't know how to solve the problem. 
First, let me show you the output of the maven compile phase, using DEBUG 
output, which does run correctly:

mvn -X compile
.
.
.
[DEBUG] cmd:  
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java 
-classpath 
/Users/Ken/.m2/repository/org/scala-lang/scala-library/2.8.0/scala-library-2.8.0.jar:/Users/Ken/.m2/repository/org/scala-lang/scala-compiler/2.8.0/scala-compiler-2.8.0.jar:/Users/Ken/.m2/repository/org/scala-tools/maven-scala-plugin/2.14.2-SNAPSHOT/maven-scala-plugin-2.14.2-SNAPSHOT.jar
 
-Xbootclasspath/a:/Users/Ken/.m2/repository/org/scala-lang/scala-library/2.8.0/scala-library-2.8.0.jar
 org_scala_tools_maven_executions.MainWithArgsInFile scala.tools.nsc.Main 
/private/var/folders/J6/J6Md7QzoH-apMu-1gFqvaE+++TM/-Tmp-/scala-maven-5484869999675003034.args
[INFO] prepare-compile in 0 s
[INFO] compile in 11 s
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

The point here is that scala-library is on the classpath.

Now for a run of mvn test:

mvn -X test
.
.
.
[INFO] Surefire report directory: 
/Users/Ken/mvn_projects/rex/target/surefire-reports
Forking command line: /bin/sh -c cd /Users/Ken/mvn_projects/rex && 
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java -jar 
/var/folders/J6/J6Md7QzoH-apMu-1gFqvaE+++TM/-Tmp-/surefirebooter1692256912894030002.jar
 
/var/folders/J6/J6Md7QzoH-apMu-1gFqvaE+++TM/-Tmp-/surefire9017473591909367701tmp
 
/var/folders/J6/J6Md7QzoH-apMu-1gFqvaE+++TM/-Tmp-/surefire6246108229640345050tmp
org.apache.maven.surefire.booter.SurefireExecutionException: scala/ScalaObject; 
nested exception is java.lang.NoClassDefFoundError: scala/ScalaObject
java.lang.NoClassDefFoundError: scala/ScalaObject
        at java.lang.ClassLoader.defineClass1(Native Method)
.
.
.

The point here is that scala-library is nowhere to be seen. I don't know if 
maven puts into one of the tmp directories (that would seem odd), but my guess 
is that there should be some mention of scala-library on the command line, but 
there isn't.

And here's my pom.xml file. AFAIK (I'm just learning maven), this should mean 
that scala-library is a dependency across all phases:

<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>your.proj.gid</groupId>
  <artifactId>rex</artifactId>
  <version>1.0-SNAPSHOT</version>
  <inceptionYear>2010</inceptionYear>
  <properties>
    <scala.version>2.8.0</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>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>snapshots.scala-tools.org</id>
      <name>Scala-Tools Maven2 Repository - Snapshots</name>
      <url>http://scala-tools.org/repo-snapshots</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.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.scalatest</groupId>
      <artifactId>scalatest</artifactId>
      <version>1.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src/main/scala</sourceDirectory>
    <testSourceDirectory>src/test/scala</testSourceDirectory>
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.1</version>
        </plugin>
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <version>2.14.2-SNAPSHOT</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <includes>
            <include>**/*Test.*</include>
            <include>**/*Suite.*</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <version>2.14.2-SNAPSHOT</version>
      </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.1</version>
        </plugin>
    </plugins>
  </reporting>
</project>


Thanks,
Ken


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to