2017-10-03 1 views
0

Maven을 사용하여 GWT 프로젝트를 빌드 중입니다.maven 컴파일 단계에서 gwt : compile을 실행할 수 없습니다.

<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-user</artifactId> 
    <version>2.5.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-dev</artifactId> 
    <version>2.5.0</version> 
    <scope>provided</scope> 
</dependency> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <version>2.5.0</version> 
      <executions> 
      <execution> 
       <configuration> 
        <module>com.karthik.ui.MainWidgets</module> 
       </configuration> 
       <goals> 
        <goal>compile</goal> 
       </goals> 
      </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

내가 컴파일 단계에서 GWT 컴파일을 수행 할 것으로 예상 실행 태그에서 목표를 컴파일 포함했다 : 아래 그림과 같이 내가 GWT 컴파일을위한 GWT-받는다는 - 플러그인을 추가했습니다. 하지만 GWT 컴파일은 패키지 단계 또는 mvn package 명령을 실행할 때만 실행됩니다.
또한 이 제공된 경우 범위가 gwt-dev 종속성으로 설정된 경우에도 아래와 같은 경고가 표시됩니다.

[WARNING] Don't declare gwt-dev as a project dependency. This may introduce complex dependency conflict 

1) 컴파일 단계에서 GWT 컴파일이 실행되지 않는 이유는 무엇입니까?
2) 경고를 극복하기 위해 GWT (gwt-user, gwt-dev) 종속성에 대해 어떤 범위를 설정해야합니까?

답변

1
[WARNING] Don't declare gwt-dev as a project dependency. This may introduce complex dependency conflict 

이 조언, 그리고 요구 사항입니다. GWT-DEV하지만 추가하는 좋은 이유가있다 :

  • 당신이 링커 당신이이 일을 할 경우

하기로 GWT-DEV를 표시해야합니다을 작성하는 경우에는 발전기

  • 를 작성하는 경우 <scope>provided</scope>. gwt 사용자 종속성은 일반적으로 제공되는 것으로 표시되어야합니다.

    gwt-dev를 프로젝트 종속성으로 포함시키지 않아도되지만, gwt-maven-plugin과 gwt 버전을 함께 사용하려는 경우 플러그인 종속성으로 유용 할 수 있습니다. .

    gwt-dev를 포함하지 않는 이유는 무엇입니까? 위의 경우를 제외하고는 해당 jar에서 클래스를 참조해야하는 경우가 없습니다. 필요한 모든 것은 gwt-user (또는 서버의 런타임시 gwt-servlet)에 있습니다. gwt-maven-plugin은 클래스 경로에 gwt-dev를 자동으로 추가하여 컴파일러를 올바르게 실행할 수 있도록합니다.


    은 "왜 GWT 컴파일 컴파일 단계에서 실행되지 않습니다"에 관해서는

    : 당신은 특별히 gwt:compile을 실행할 수있는 GWT-받는다는 - 플러그인을 구성한

    ,하지만 당신은 을 말할 것을 잊었다 이를 실행하기 때문에 기본 시간 (prepare-package) 동안 실행됩니다. 대신 태그에 <phase>compile</phase>을 지정해야합니다.

    그러나 compile 단계가 너무 일찍 시작될 수 있습니다. .java 파일이 .class 바이트 코드로 컴파일되기 전에 실행되면 컴파일러가 실패합니다. 라이프 사이클 문서 https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html에서, process-classes 이상과 같이, 다른 시간을 고려 : 컴파일에서

    process-classes 후 공정 생성 된 파일을, 예를 들어 자바 클래스에 바이트 코드 향상을 할 수 있습니다.

  • +0

    응답 해 주셔서 감사합니다. 당신도 내 첫 질문에 대답하도록 요청하십시오. – Karthik

    +0

    죄송합니다, 그것을 놓쳤습니다! 지금 추가 중. –

    +0

    설명해 주셔서 감사합니다. – Karthik

    관련 문제