6

現在、Java 1.7 へのアップグレードに取り組んでいます。残念なことに、こうした状況の中で、多くのアプリケーションが 1.7 でコンパイルできず、壊れてしまいます (オーバーライド フラグが 1.7 に渡されたとしても)。計画は、これらをできるだけ早くリファクタリングすることです。

POM のいくつかのプロパティに基づいて、さまざまな JDK を使用できるように Maven を構成したいと考えています。私は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>
...

さらに、「verbose」フラグから出力が得られません。これは奇妙に感じます。たぶん、上記は完全に無視されますか?

編集: 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 を報告します。これは今では過去の迷惑で陽気になっています。

いくつかの助けをいただければ幸いです、ありがとう。

4

1 に答える 1

5

コンパイルと jar は 2 つの別個の操作です。コンパイラ パスを変更したときにコンパイル エラーが発生するという事実は、コンパイルが正しく行われていることを示しています。ほとんどの場合、maven jar プラグインは java7 jar ツールを使用して jar ファイルを作成しています。

于 2012-06-26T16:36:52.023 に答える