2011-09-23 123 views
2

我在構建項目(mvn clean install)時遇到此問題,其中一些傳遞依賴項是快照版本,並且會下載並複製到目標webapp目錄中,例如XXXUtil-1.0-20110922.172721-52.jar。然後當我運行mvn gwt:run時,它找到使用XXXUtil-1.0-SNAPSHOT.jar並將其複製到目標webapp目錄。我無法弄清楚爲什麼會發生這種情況。無論我是以爆炸方式還是在現場運行,都無關緊要。Maven GWT Plugin複製同一快照罐的多個版本

<plugins> 
    <!-- GWT Maven Plugin --> 
    <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <version>2.3.0-1</version> 
      <executions> 
        <execution> 
          <goals> 
            <goal>compile</goal> 
            <goal>i18n</goal> 
            <goal>generateAsync</goal> 
          </goals> 
        </execution> 
      </executions> 
      <configuration> 
        <runTarget>Shell.html</runTarget> 
        <hostedWebapp>${webappDirectory}</hostedWebapp> 
    <i18nMessagesBundle>com.myapp.client.Messages</i18nMessagesBundle> 
      </configuration> 
      <dependencies> 
        <dependency> 
          <groupId>com.google.gwt</groupId> 
          <artifactId>gwt-user</artifactId> 
          <version>${gwt.version}</version> 
        </dependency> 
        <dependency> 
          <groupId>com.google.gwt</groupId> 
          <artifactId>gwt-dev</artifactId> 
          <version>${gwt.version}</version> 
        </dependency> 
      </dependencies> 
    </plugin> 

    <!-- Copy static web files before executing gwt:run --> 
    <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <executions> 
        <execution> 
          <phase>compile</phase> 
          <goals> 
            <goal>exploded</goal> 
          </goals> 
        </execution> 
      </executions> 
      <configuration> 
<!-- <outputFileNameMapping>@{artifactId}@[email protected]{version}@[email protected]{extension}@</outputFileNameMapping> --> 
        <webappDirectory>${webappDirectory}</webappDirectory> 
      </configuration> 
    </plugin> 
</plugins> 

無這裏描述的幫助建議: http://www.tikalk.com/alm/forums/maven-war-plugin-picking-multiple-version-same-snapshot-jars

如果我構建XXXUtil-1.0-SNAPSHOT.jar的本地快照,它不起作用,但從nexus存儲庫下載快照時不起作用。另一種看待它的方式就像這樣:項目A生成一個WAR,並依賴於B.jar,這取決於C.jar。當我使用mvn install構建我的戰爭時,它會在WEB-INF/lib中生成正確的jar,因此我們有C-1.0-20110922.172721-52.jar。這是正確的,如果我部署我的戰爭,它是有效的。如果我使用eclipse在託管模式下運行,那很好。但是當我運行mvn:gwt-run時,C-1.0-SNAPSHOT.jar被複制到WEB-INF/lib中,因此我有2個罐子C-1.0-SNAPSHOT.jar和C-1.0-20110922.172721-52.jar。

回答

0

我建議你唯一能夠嘗試去調試maven-gwt-plugin。

結帳從git倉庫 https://github.com/gwt-maven-plugin/gwt-maven-plugin.git

+0

這就是我所做的,但仍然不知道爲什麼maven-gwt-plugin試圖使用XXXUtil-1.0-SNAPSHOT.jar而不是XXXUtil-1.0-20110922.172721-52.jar。如果我構建XXXUtil-1.0-SNAPSHOT.jar的本地快照,它不會在從nexus存儲庫下載快照時起作用。 – Asim

0

我有完全相同的問題。調試後,我刪除了使用maven-war-plugin並添加了maven-resources-plugin(編譯階段,複製資源目標)。我嘗試gwt:運行並安裝之後,沒有任何問題的工作。這樣,我們避免了依賴被複制兩次。