我在构建项目(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