我们目前正忙于升级到 Java 1.7。不幸的是,随着这些事情的发展,许多应用程序无法在 1.7 下编译并中断(即使将覆盖标志传递给 1.7)。计划是尽快重新考虑这些因素。
我想以这样一种方式配置 Maven,即可以根据 POM 中的某些属性使用不同的 JDK。我按照http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html信守承诺,但无论我做什么,maven 都会忽略 POM 中指定的 java .
POM 具有以下条目:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
<compiler-version>1.6</compiler-version>
<executable>/usr/lib/jvm/java-6-openjdk/bin/javac</executable>
<debug>true</debug>
<verbose>true</verbose>
</configuration>
</plugin>
...
此外,我没有从“详细”标志中得到任何输出——我觉得这很奇怪。也许以上完全被忽略了?
编辑:我知道它不起作用,因为检查 META-INF/MANIFEST.MF 文件显示不正确的 java 版本。使用的版本与当前路径中的 javac 相对应。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: jaco
Build-Jdk: 1.7.0_147-icedtea
Implementation-Title: xxx
Implementation-Vendor: xxx
Implementation-Version: 1.3.7
Specification-Title: xxx
Specification-Vendor: xxx
Specification-Version: 1.3.7
编辑:其他一些相当有趣的东西。如果我故意破坏 中的文件引用,我会得到:
[INFO] Compilation failure
Failure executing javac, but could not parse the error:
/bin/sh: /usr/lib/jvm/java-6-openjdk: Permission denied
编辑:我怀疑问题出在构建清单文件的组件上。如果我在我的机器上破坏 java 7(即将 javac 重命名为 javac.pleasegoaway),它会编译!!但是,清单文件仍然报告版本 1.7。现在这已经过去烦人并且变得热闹了。
一些帮助将不胜感激,谢谢。