我已经对javac进行了一些代码更改,并希望maven使用我更改的javac版本。不幸的是,似乎maven发布了自己的javac实现。如何使用系统范围的javac(在shell中运行javac
时执行的javac)来编译maven。
我不知道这些选项意味着什么,我尝试提供我在此处找到的fork
和forceJavacCompilerUse
:http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html
但它们似乎没有任何帮助。
答案 0 :(得分: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
中的“可执行文件”:
Where is the JDK version to be used by Maven compiler specified?
答案 1 :(得分:0)
我相信maven会寻找JVA_HOME来寻找java。因此,当您将其设置为特定的Java时,maven应该可以使用它