混合scala/java项目,哪个先编译?



已有一些基于代码的类似问题,但我想以更一般的方式提出。

假设有java源代码和scala源代码,似乎要添加scala-maven-plugin

  1. 那么是否有一个默认的配置是先编译的,scala还是java?
  2. 如果我们希望scala代码依赖于java,或者相反,该怎么做?(像scala-compile-first在插件?)
  3. 是否有可能一些scala代码依赖于java,而一些java代码也依赖于scala?
  1. 如果两个编译都在其默认阶段运行,则首先编译java
  2. scala依赖于java,没有什么可定制的,这是默认行为。如果java依赖于scala,你应该在process-resources之前强制编译scala代码。
  3. 是的,你可以有"混合"scala/java,在这种情况下,scala编译器应该先运行并知道java源代码(scala编译器会解析它们以提取API)。它的配置与scala first
  4. 相同
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
...
例如,请参阅文档:混合Java/Scala项目- Scala -maven-plugin或集成测试Scala -maven-plugin/src/it在master·davidB/Scala -maven-plugin

最新更新