2

重複の可能性:
MavenでのJavaバージョンの不一致

MavenでJava1.5を使用するように構成されたプロジェクトがあります。

mvn help:effective-pom

...
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
      <source>1.5</source>
      <target>1.5</target>
    </configuration>
...

私のマシンにはJava1.6がインストールされており、Mavenはそれを使用しています。

mvn -v

...
Apache Maven 2.2.1 (r801777; 2009-08-06 20:16:01+0100)
Java version: 1.6.0_21

プロジェクトを(を使用して)E​​clipseにインポートmvn eclipse:eclipseし、POMで指定されているようにJava1.5でビルドしています。

@Overrideここで、Java 1.5では許可されていないがJava1.6ではサポートされているインターフェース実装メソッドをでマークすると、Mavenはエラーなしでプロジェクトをビルドしますが、Eclipseはアノテーションをコンパイル時エラーとしてマークし、プロジェクトのビルドを拒否します。

MavenにJava1.5でプロジェクトを実際にコンパイルさせるか、EclipseにMavenと同じ設定を使用してプロジェクトをコンパイルさせるにはどうすればよいですか?

4

1 に答える 1

1

JDK 1.5の新しいバージョンは@Override、インターフェースの実装方法にある場合は無視しているようです。https ://stackoverflow.com/a/2336850/256245 JDK 1.6は、ターゲット1.5を使用してコンパイルしている場合も同じように動作すると思います。それが、Mavenがそれについて文句を言わない理由です。

Mavenが実際にJava1.5にコンパイルされているかどうかを確認するには、AnimalSnifferプラグインを使用する必要があります。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>animal-sniffer-maven-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <id>check-java15-sun</id>
            <phase>test</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <signature>
                    <groupId>org.codehaus.mojo.signature</groupId>
                    <artifactId>java15-sun</artifactId>
                    <version>1.0</version>
                </signature>
            </configuration>
        </execution>
    </executions>
</plugin>

Eclipseには独自のコンパイラ実装があるため、Eclipseを@Override満足させるには、インターフェイス実装メソッドからアノテーションを削除する必要があると思います。注釈はJDKによって無視されていたため、削除しても害はありません。

于 2012-07-04T15:36:06.503 に答える