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

mixed scala/java project, which compile first?

有一些基于代码的类似问题,但我想问一个更笼统的问题。

假设有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.
  3. 之前的阶段强制编译 scala 代码
  4. 是的,你可以“混合”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