【问题标题】:What's the difference between maven-compiler-plugin and scala-maven-plugin?maven-compiler-plugin 和 scala-maven-plugin 有什么区别?
【发布时间】:2017-12-19 15:35:00
【问题描述】:

我目前正在处理一个混合 Java 和 Scala (Spark) 的项目。好像这还不够,我的一些依赖项导入了其他版本的 Spark 和 Scala(不兼容复古)......

总而言之,这就是我的依赖树的样子:

myProjectA
\_ myLibB
| \_ spark 1.5.2 (excluded in my pom.xml)
|  \_ scala 2.10.4 (excluded in my pom.xml)
\_ spark 2.2.0 (with Scala 2.11)
|  \_ scala 2.11.7
\_ scala 2.11.11
\_ java 8

在我的项目中对地图进行小幅修改后,编译不再起作用...仅供参考,修改包括在硬编码地图中添加一个元素。

因此,我正在寻找一种解决方案来编译我的项目。我目前正在使用此构建配置:

  <plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>scala-maven-plugin</artifactId>
    <version>3.1.3</version>
    <executions>
      <execution>
        <goals>
          <goal>compile</goal>
          <goal>testCompile</goal>
        </goals>
        <configuration>
          <args>
            <arg>-dependencyfile</arg>
            <arg>${project.build.directory}/.scala_dependencies</arg>
          </args>
        </configuration>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

我意识到,即使在导致先前配置错误的更改之后,这个其他配置似乎也能正常工作(我将 scala-maven-plugin 替换为 maven-compiler-plugin):

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
    </configuration>
  </plugin>

两个问题:
- maven-compiler-pluginscala-maven-plugin 有什么区别?
- maven-compiler-plugin 可以高效编译 Scala 代码/混合 Java-Scala 代码吗?

【问题讨论】:

    标签: java scala maven apache-spark


    【解决方案1】:

    ma​​ven-compiler-plugin 和 scala-maven-plugin 有什么区别?

    Maven 编译器插件主要是编译 java 源码。 Scala 插件可以编译 Java 和 Scala 源代码。 Maven 编译器插件将始终是在编译阶段调用的第一个插件。因为它不能编译 scala 源解决方案是使用一些预编译阶段来运行 scala 和 java 兼容的编译器插件。实际上,如果您使用 scala 插件,则不需要 maven 编译器插件。

    ma​​ven-compiler-plugin 能否高效编译 Scala 代码/Java-Scala 混合代码?

    没有

    请通过这个link

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 2018-06-16
      • 2014-10-10
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2017-11-09
      • 2018-02-01
      • 2012-08-07
      相关资源
      最近更新 更多