2014-01-24 6 views
1

Maven을 사용하여 GWT 프로젝트를 빌드하고 있습니다. 나는 target/classes/com/lokur/motd/client/events 디렉토리에있는 명령, 메이븐이 생성되어 진 관련 Java 소스 "깨끗한 MVN 설치"를 실행하면,Gin이 "target/classes"디렉토리에 소스 파일을 생성하는 이유는 무엇입니까?

package com.lokur.motd.client.events; 

import com.gwtplatform.dispatch.annotation.GenEvent; 

@GenEvent 
public class EditorChange { 
} 

그러나 : 좀 상투적 인 코드를 생성 Gin을 사용하고 있습니다. 왜 classes 디렉토리에 .java 개의 파일이 있습니까? 나는 target/generated-sources 폴더에있는 자바 소스 생성하기 위해 아래의 메이븐 플러그인을 사용하고

:이 경우

<plugin> 
    <groupId>org.bsc.maven</groupId> 
    <artifactId>maven-processor-plugin</artifactId> 
    <version>2.0.5</version> 
    <executions> 
     <execution> 
      <id>process</id> 
      <goals> 
       <goal>process</goal> 
      </goals> 
      <phase>generate-sources</phase> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
        <source>target/generated-sources/apt</source> 
       </sources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

는 두 EditorChangeEvent.java 파일이 생성 얻고있다 : 하나 generated-sources 폴더에; 다른 target/classes/<..package..> 폴더에 있습니다. 따라서, 컴파일 오류가 아래의 원인 :

duplicate class: 
com.lokur.motd.client.events.EditorChangeEvent 

답변

0
, 문제가 우리의 프로젝트에 의해 지원 GWT의 버전 비록이 "자바 소스 파일"은 "클래스"디렉토리로 가고 있었다 이유를 만들 수 없습니다

이었다. 프로젝트가 Gin을 사용하도록 구성되지 않았으므로 @GenEvent를 지원하지 않았습니다. 그래서 Gin의 주석에 의존하지 않고 수동으로 Event 클래스와 Handler 클래스를 만들었습니다. 이제는 잘 작동합니다. 이 스레드를 닫습니다.

0

문제는 org.bsc.maven.maven-processor-plugin과 컴파일러 플러그인이 서로 다른 폴더에 (동일한) 소스를 생성하고 있다는 것입니다. 해결 방법은 하나의 프로세서를 비활성화하는 것입니다. 내 솔루션에서는 org.bsc.maven.maven-processor-plugin을 비활성화했습니다. link.