混合scala/java项目,先编译哪个?
mixed scala/java project, which compile first?
有一些基于代码的类似问题,但我想问一个更笼统的问题。
假设有java个源码和scala源码,看来要加scala-maven-plugin
- 那么是否有一个默认配置,哪个先编译,scala 还是 java?
- 如果我们想让scala代码依赖于java,或者相反,怎么办呢? (就像插件中的
scala-compile-first
一样?)
- 是否有可能某些 scala 代码依赖于 java,而某些 java 代码也依赖于 scala?
- java 首先编译,如果两个编译在它们的默认阶段运行
- scala 依赖于 java,无需自定义,这是默认行为。如果 java 依赖于 scala,你应该在
process-resources
. 之前的阶段强制编译 scala 代码
- 是的,你可以“混合”scala/java,在这种情况下,scala 编译器应该在 运行 之前了解 java 源(scala 编译器将解析它们以提取 API).和scala first配置一样
<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>
...
例如,请参阅文档:Mixed Java/Scala Projects – scala-maven-plugin or the integration test scala-maven-plugin/src/it at master · davidB/scala-maven-plugin
有一些基于代码的类似问题,但我想问一个更笼统的问题。
假设有java个源码和scala源码,看来要加scala-maven-plugin
- 那么是否有一个默认配置,哪个先编译,scala 还是 java?
- 如果我们想让scala代码依赖于java,或者相反,怎么办呢? (就像插件中的
scala-compile-first
一样?) - 是否有可能某些 scala 代码依赖于 java,而某些 java 代码也依赖于 scala?
- java 首先编译,如果两个编译在它们的默认阶段运行
- scala 依赖于 java,无需自定义,这是默认行为。如果 java 依赖于 scala,你应该在
process-resources
. 之前的阶段强制编译 scala 代码
- 是的,你可以“混合”scala/java,在这种情况下,scala 编译器应该在 运行 之前了解 java 源(scala 编译器将解析它们以提取 API).和scala first配置一样
<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>
...
例如,请参阅文档:Mixed Java/Scala Projects – scala-maven-plugin or the integration test scala-maven-plugin/src/it at master · davidB/scala-maven-plugin