2009-05-19 92 views
13

在我的maven2項目中,我有一個目錄${basedir}/autogen,其中包含wsdl2java生成的一些自動生成的源代碼文件。maven編譯錯誤:重複類

運行時mvn compile由於重複的類,我得到一個編譯錯誤,它存在於${basedir}/autogen中。這是真的。但是編譯階段在${basedir}/autogen中做了什麼?我沒有告訴maven將此目錄添加爲源目錄。 似乎沒有辦法告訴maven忽略目錄。

+0

@你可以列出重複的類名嗎?他們是否使用了javax。*類? – sal 2009-05-26 14:24:43

+0

我有一個類似的問題,我需要消化一個wsdl Web服務和模式xsd。我也不需要這些,但是在重疊中有dups,然後在編譯時會出現重複類錯誤。 – Adam 2010-06-23 17:30:27

回答

0

它很難改變默認的Maven行爲,我認爲它能夠更好地去用它 - 你可以生成與Maven wsdl2java-maven-plugin

+0

我使用maven插件生成它們。 – vpalle 2009-05-19 12:05:42

4

這些文件我這個見過幾次面。在幾乎所有情況下,都是由於將生成的類添加到主src樹中,然後檢入版本控制。

+1

再次從版本控制中刪除它們,可以解決它嗎? – vpalle 2009-05-25 07:38:00

+0

他們沒有添加到版本控制中,只是檢查,所以我想這不是問題。 – vpalle 2009-05-25 07:53:55

1

我有一個與JPA模型生成器類似的問題。它發生在這個依賴性:

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

我錯誤地添加範圍=提供並且導致:

[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

我使用行家-處理器插件時有同樣的問題,並發現該溶液是配置行家-編譯器插件如下:

 <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

我解決了同樣的問題

  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

我解決它從我的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>