2

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

在不知道这些选项的含义的情况下,我尝试提供fork, 并forceJavacCompilerUse在此处找到:http ://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html 但它们似乎没有帮助全部。

4

2 回答 2

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 文件清单。

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

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

Maven编译器要使用的JDK版本在哪里指定?

于 2013-04-23T05:51:48.950 回答
0

我相信 maven 会寻找 JVA_HOME 来查找 java.util 文件。因此,当您将其设置为您的特定 java maven 时应该能够使用它

于 2013-04-23T05:52:09.240 回答