我們正在忙於升級到Java 1.7。不幸的是,當這些事情發生時,大量的應用程序不能在1.7以下編譯並中斷(即使覆蓋標誌傳遞給1.7)。計劃是儘快重新考慮這些因素。通過Maven構建具有不同JDK版本的JAR
我想以這種方式配置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版。現在這已經過去了,變得鬧得沸沸揚揚。
一些幫助將不勝感激,謝謝。
您是否對文檔在鏈接中建議的settings.xml進行了更改? – aglassman
我做過了,但由於它不起作用,我硬編碼路徑以完全繞過它。 –
標籤中是否有標籤正確標記標籤? –
aglassman