有个工程的代码主要涉及到java和scala,有部分py代码不过可以忽略,主要就是java和scala,在最开始构建工程的时候我本来想用sbt,但是考虑到sbt的单线程构建速度,以及普世度,最后还是使用的mave。

maven的插件本身是支持scala的配置,没有什么大问题,通过新增如下插件:

<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>

和相关依赖即可。

<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>

<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>${scala.version}</version>
</dependency>

<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-reflect</artifactId>
<version>${scala.version}</version>
</dependency>

主要的麻烦是在测试上,工程中我引入了单测和测试覆盖率报告的生成,但是执行mvn test的时候并不会执行scala的单测。

通过新增如下plugin:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>WDF TestSuite.txt</filereports>
</configuration>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

这个插件工程的地址在:https://github.com/scalatest/scalatest-maven-plugin

如此新增后通过工程的root目录执行mvn test能过调用scala的测试,但是我的工程是java和scala混搭,也就是scala子模块里面引用了java工程,因此直接进入scala的子工程执行mvn test的时候会出错,报错引入的java 类 not found。


扫码手机观看或分享: