2011-09-23 28 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:运行并安装之后,没有任何问题的工作。这样,我们避免了依赖被复制两次。