【问题标题】:Force Maven to use System's javac强制 Maven 使用 System 的 javac
【发布时间】:2013-04-23 05:43:21
【问题描述】:

我对 javac 进行了一些代码更改,并希望 maven 使用我更改的 javac 版本。不幸的是,maven 似乎发布了自己的 javac 实现。如何让 maven 使用系统范围的 javac(在 shell 中运行 javac 时执行的那个)编译源代码。

在不知道这些选项的含义的情况下,我尝试提供forkforceJavacCompilerUse,我在这里找到了:http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html 但它们似乎根本没有帮助。

【问题讨论】:

    标签: maven javac


    【解决方案1】:

    你是在正确的球场。看这里:

    http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

    为避免硬编码可执行文件的文件系统路径,您可以使用 一个财产。例如:

    <executable>${JAVA_1_4_HOME}/bin/javac</executable>

    然后每个开发人员在 settings.xml 中定义这个属性,或者设置一个 环境变量,以便构建保持可移植性。

    <settings>   
        [...]   
      <profiles>
        [...]
        <profile>
          <id>compiler</id>
            <properties>
              <JAVA_1_4_HOME>C:\Program Files\Java\j2sdk1.4.2_09</JAVA_1_4_HOME>
            </properties>
        </profile>   
      </profiles>   
      [...] 
      <activeProfiles>
        <activeProfile>compiler</activeProfile>   
      </activeProfiles> 
    </settings>
    

    如果您使用不同的 JDK 构建,您可能需要自定义 jar 文件清单。

    我相信关键是设置一个明确的&lt;executable&gt;。而且我怀疑它可能是硬编码的,不会弄乱环境变量或其他子句。

    另请参阅此链接,并查看示例pom.xml 中的“可执行文件”:

    Where is the JDK version to be used by Maven compiler specified?

    【讨论】:

    • 关于答案的最后一部分:我通过链接访问了 maven-jar-plugin 的 Manifest Customization 页面,但示例 pom.xml 中没有可执行这个词。我也曾通过 web.archive.org 进行过一段时间的旅行,但回顾这个页面的 2009 版本,我在示例 pom.xml 中没有发现任何“可执行文件”的痕迹。阿米,我错过了什么?
    【解决方案2】:

    我相信 maven 会寻找 JVA_HOME 来寻找 java.util.所以当你把它设置成你特定的java maven应该可以使用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多