web-dev-qa-db-ja.com

Mavenコンパイルエラー:クラスが重複しています

私のmaven2プロジェクトには、${basedir}/autogenによって生成された自動生成されたソースコードファイルを含むディレクトリwsdl2Javaがあります。

mvn compileを実行すると、クラスが重複しているため、${basedir}/autogenにあるコンパイルエラーが発生します。これは本当です。しかし、${basedir}/autogenでコンパイルフェーズは何をしているのでしょうか?このディレクトリをソースディレクトリとして追加するようにmavenに指示していません。そして、ディレクトリを無視するようにMavenに指示する方法はないようです。

16
vpalle

Maven-processor-pluginを使用したときに同じ問題が発生し、解決策はmaven-compilerプラグインを次のように構成することであることがわかりました。

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <compilerArgument>-proc:none</compilerArgument>
            </configuration>
        </plugin>

-proc:noneは、アノテーション処理なしでコンパイルが行われるため、重複するクラスがないことを意味します(通常、ソースの生成フェーズで生成されます)

それがお役に立てば幸いです。

25
Nicholas Hemley

私はこれを数回見ました。ほとんどすべての場合、生成されたクラスがメインのsrcツリーに追加され、バージョン管理にチェックインされることが原因です。

4
sal

私の場合、ソースディレクトリを変更したときに機能しました。

新しいPOMは次のようになります。

<build>
        <sourceDirectory>src</sourceDirectory>

SourceDirectoryタグを使用してsrcフォルダーのみをポイントします。

以前は

 <build>
    <sourceDirectory>.</sourceDirectory>

以前はIntellIJで機能していましたが、cmdでは機能していなかったことに注意してください。今では両方で動作します。

2
roshan birar

JPAモデルジェネレーターでも同様の問題が発生しました。この依存関係で発生しました:

<dependency>
    <groupId>org.Eclipse.persistence</groupId>
    <artifactId>org.Eclipse.persistence.jpa.modelgen</artifactId>
    <version>2.1.1</version>
</dependency>

Scope = Providedを誤って追加した結果、次のようになりました。

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:2.3.1:compile (default-compile) on project mocker: Compilation failure: Compilation failure:
[ERROR] \Projects\entity\MockVehicle_.Java:[10,7] duplicate class: entity.MockVehicle_
1
Alex Kamburov

Pom.xmlからgenerateAsyncを削除することで解決します。GWTプラグインは次のようになります。

                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>${gwtVersion}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>test</goal>
                            <!-- <goal>i18n</goal> -->

                        </goals>
                    </execution>
                </executions>
1
Ahmed Salem

私はまったく同じ問題を抱えていました。私の場合、問題は-f=./pom.xmlでMavenを呼び出したことでした。なぜこれが別の結果につながるのかわかりませんが(誰かが説明できればいいのですが)、他の誰かが同じ問題を抱えているかどうかを知っておくとよいでしょう。

1
Robert Stoll

デフォルトのMavenの動作を変更するのは難しいので、それを使用する方が良いと思います-mavenでこれらのファイルを生成できます wsdl2Java-maven-plugin

0
IAdapter

私の場合はこれを助けました:

<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
0
user5693594