私のmaven2プロジェクトには、${basedir}/autogen
によって生成された自動生成されたソースコードファイルを含むディレクトリwsdl2Java
があります。
mvn compile
を実行すると、クラスが重複しているため、${basedir}/autogen
にあるコンパイルエラーが発生します。これは本当です。しかし、${basedir}/autogen
でコンパイルフェーズは何をしているのでしょうか?このディレクトリをソースディレクトリとして追加するようにmavenに指示していません。そして、ディレクトリを無視するようにMavenに指示する方法はないようです。
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は、アノテーション処理なしでコンパイルが行われるため、重複するクラスがないことを意味します(通常、ソースの生成フェーズで生成されます)
それがお役に立てば幸いです。
私はこれを数回見ました。ほとんどすべての場合、生成されたクラスがメインのsrcツリーに追加され、バージョン管理にチェックインされることが原因です。
私の場合、ソースディレクトリを変更したときに機能しました。
新しいPOMは次のようになります。
<build>
<sourceDirectory>src</sourceDirectory>
SourceDirectoryタグを使用してsrcフォルダーのみをポイントします。
以前は
<build>
<sourceDirectory>.</sourceDirectory>
以前はIntellIJで機能していましたが、cmdでは機能していなかったことに注意してください。今では両方で動作します。
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_
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>
私はまったく同じ問題を抱えていました。私の場合、問題は-f=./pom.xml
でMavenを呼び出したことでした。なぜこれが別の結果につながるのかわかりませんが(誰かが説明できればいいのですが)、他の誰かが同じ問題を抱えているかどうかを知っておくとよいでしょう。
デフォルトのMavenの動作を変更するのは難しいので、それを使用する方が良いと思います-mavenでこれらのファイルを生成できます wsdl2Java-maven-plugin
私の場合はこれを助けました:
<!-- 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>