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