在Eclipse中混合使用scala,maven和java
我有一个java maven项目,我想用scala进行单元测试。 但是,由于java和scala使用自己的编译器,我怎样才能在一个Eclipse项目中混合java和scala代码。 由于这个scala代码不会在Eclipse中编译,因为java编译器需要java语法。
目前我的项目都基于Eclipse,他们是基于Java的项目。 他们是否需要转换为不同的项目类型,例如scala?
如果你只想从Scala测试Java代码,那么建立这样一个Maven项目很容易。 由于我不是eclipse用户,我不确定它如何与eclipse一起使用。 我用IntelliJ进行了测试,效果很好。 eclipse也不应该有任何问题。
我创建了一个简单的pom.xml
,它只是使用scala编译器进行测试,并使用普通的java编译器作为主要的java代码。
pom.xml
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow.Q13379591</groupId>
<artifactId>Q13379591</artifactId>
<version>1.0-SNAPSHOT</version>
<name>${project.artifactId}-${project.version}</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<scala.version>2.9.2</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_${scala.version}</artifactId>
<version>2.0.M4</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<id>scala-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<args>
<arg>-g:vars</arg>
<arg>-make:transitive</arg>
<arg>-dependencyfile</arg>
<arg>${project.build.directory}/.scala_dependencies</arg>
</args>
</configuration>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>1.0-M2</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>WDF TestSuite.txt</filereports>
<stdout>W</stdout> <!-- Skip coloring output -->
</configuration>
<executions>
<execution>
<id>scala-test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
下面是一个我想测试的简单Java类:
src/main/java/com/stackoverflow/Hello.java
package com.stackoverflow;
/**
* @author maba, 2012-11-14
*/
public interface Hello {
String hello();
}
src/main/java/com/stackoverflow/HelloJava.java
package com.stackoverflow;
/**
* @author maba, 2012-11-14
*/
public class HelloJava implements Hello {
public String hello() {
return "Hello Java";
}
}
最后是ScalaTest测试课程。
src/test/scala/com/stackoverflow/HelloJavaTest.scala
package com.stackoverflow
import org.scalatest.FlatSpec
/**
* @author maba, 2012-11-14
*/
class HelloJavaTest extends FlatSpec {
"HelloJava" should "be instance of Hello" in {
val hello = new HelloJava
val result = hello match {
case f:Hello => true
}
assert(result)
}
it should "say Hello Java" in {
val helloJava = new HelloJava
assert(helloJava.hello === "Hello Java")
}
}
您现在可以使用以下命令运行它:
mvn test
我可以右键单击IntelliJ中的测试用例并运行测试。 在eclipse中也应该是可能的。
maven-scala插件可以联合编译Scala和Java代码。 一般来说Scala可以从Scala 2.7开始进行联合编译。
链接地址: http://www.djcxy.com/p/11427.html