Maven GWT插件复制相同快照jar的多个版本

时间:2011-09-23 16:16:43

标签: gwt maven-plugin

我有这个问题,我构建我的项目(mvn clean install),一些传递依赖项是快照版本,并下载并复制到目标webapp目录,例如XXXUtil-1.0-20110922.172721-52.jar。然后,当我运行mvn gwt:run时,它会找到使用XXXUtil-1.0-SNAPSHOT.jar并将其复制到目标webapp目录。我无法弄清楚为什么会这样。无论我是以爆炸还是在现场运行都无关紧要。

<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}@-@{version}@.@{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。

2 个答案:

答案 0 :(得分:0)

我唯一能建议你的是尝试调试maven-gwt-plugin。

从git存储库中签出 https://github.com/gwt-maven-plugin/gwt-maven-plugin.git

答案 1 :(得分:0)

我有完全相同的问题。调试之后,我删除了使用maven-war-plugin并添加了maven-resources-plugin(编译阶段,复制资源目标)。我试过gwt:运行并安装之后,工作没有任何问题。这样,我们避免了依赖项被复制两次。