2009-05-19 2 views
13

私のmaven2プロジェクトには${basedir}/autogenというディレクトリがあり、それにはwsdl2javaで生成された自動生成されたソースコードファイルが含まれています。mavenコンパイルエラー:重複クラス

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

+0

のようになります。私のpom.xmlからgenerateAsyncを削除@ vpalle重複したクラス名をリストできますか?彼らはjavax?*クラスのdupesですか? – sal

+0

私はwsdl Webサービスとスキーマxsdを消化するのに必要な同様の問題を抱えています。いずれも必要なものはありませんが、オーバーラップするとdupsが生成され、コンパイル時にduplicatクラスのエラーが発生します。 – Adam

答えて

0

そのデフォルトのMavenの動作を変更するのは難しい、私はその良いことで行くことだと思う - 私はこれを数回見てきたのmaven wsdl2java-maven-plugin

+0

私はそれらをmavenプラグインで生成しています。 – vpalle

4

と、それらのファイルを生成することができます。ほとんどの場合、生成されたクラスがメインのsrcツリーに追加され、バージョン管理がチェックされているためです。

+1

バージョンコントロールからそれらを削除すると、それを解決できますか? – vpalle

+0

バージョンコントロールには追加されていませんが、チェックしただけで問題はないと思います。 – vpalle

+0

このアンサーは非常に便利です。ありがとうございます。あなたのローカル設定の変更がメインフォルダのクラスを生成しなかったかどうかを再度確認してください。それでは、誰も作業コードをコミットしたくないので、バージョンコントロールに入れられません。 – kboom

1

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

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

私が間違ってスコープを追加=設けられ、前記の結果:解決することを私はMavenのプロセッサ・プラグインを使用するときに同じ問題を抱えていたし、見つかった

[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_ 
22

以下のようにMavenコンパイラプラグインを設定することでした:

 <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:どれもコンパイルは、注釈処理なしで行われていないため、重複するクラス(typicであることを意味しません生成元段階で生成された同盟国)

私は助けてくれることを望みます。

+2

HibernateのJPA静的メタモデルジェネレータのドキュメントでは、プロセッサの実行を制御したい場合は、上記のソリューションをmaven-processor-pluginと組み合わせて使用​​することができます。 – dSebastien

+1

[MapStruct](http://mapstruct.org)で私の問題を解決しました。 –

+0

私のJARアーカイブにはまだ重複したクラスファイルが含まれています。 –

-2

私は同じ問題に

  1. cleaning maven project :- mvn clean
  2. delete com folder from src then compile
  3. copy com from generated to src->main-->java
  4. again compile

を解決・ホープ、このヘルプ..

1

私はそれを解決することで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> 
+0

行が削除されました generateAsync

+0

これは私のために働いていました(Maven、GWT、requestfactory build) –

関連する問題