代码之家  ›  专栏  ›  技术社区  ›  Blessed Geek

如何将依赖项复制到GAE WAR/WEB-INF/LIB

  •  5
  • Blessed Geek  · 技术社区  · 14 年前

    我是从蚂蚁的角度来的,请原谅我。我意识到这里已经有很多关于如何区分依赖性的问题,但是它们似乎都没有告诉我们如何做需要做的事情。

    问题1 : 目前,结合使用maven war插件,当我运行mvn war:war时,它会在目标文件夹中创建war文件夹。

    但是,我希望将所有依赖项的jar复制到由Google Eclipse插件(启用gae,禁用gwt)设置的war/web-inf/lib中,而不覆盖Google Eclipse插件放置的jar。

    我不想设置war文件或war目录。我只需要复制/合并所有非GAE JAR和GAE JAR,以便当项目作为GAE Web应用程序运行时,Eclipse不会抱怨ClassNotFoundException。

    问题2 : 在Eclipse中使用Ant时,我可以在Eclipse中运行Ant目标。

    现在,我必须从一个shell窗口执行mvn命令(它相互忽略了Eclipse会话的存在)。似乎只有在更新依赖项时才会自动完成。

    有没有一种方法,或者Eclipse的任何插件允许我在Eclipse中运行MVN目标?

    附加信息 :

    mvn dependency:copy-dependencies 继续复制到 target/dependency 目录,包含以下内容:

      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>process-resources</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
              <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
            </configuration>
          </execution>
        </executions>
      </plugin>
    

    我甚至尝试改变到绝对路径

    <outputDirectory>
      /home/geek/eclipse/workspace/Demo-autoshoppe/holycow
    </outputDirectory>
    

    但是holycow目录仍然是空的,mvn仍然坚持复制到 目标/相关性 目录。我目前的解决方案是软链接 目标/依赖关系 作为 war/WEB-INF/lib 这是一个非常糟糕的组合。为什么maven对outputdirectory规范不敏感?我用的是Ubuntu的Maven2.2。

    3 回复  |  直到 14 年前
        1
  •  7
  •   Steven Francolla    14 年前

    我有真正的答案给你,我的男人。

    使用“default cli”执行ID。确保使用的是maven 2.2+。这个exec id应用于mojo的命令行执行。

      <build>
        <pluginManagement>
          <plugins>
            <!-- Copy dependencies to war/WEB-INF/lib for GAE proj compliance. -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-dependency-plugin</artifactId>
              <executions>
                <execution>
                  <id>default-cli</id>
                  <goals>
                    <goal>copy-dependencies</goal>
                  </goals>
                  <configuration>
                    <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory>
                    <overWriteReleases>false</overWriteReleases>
                    <overWriteSnapshots>false</overWriteSnapshots>
                    <overWriteIfNewer>true</overWriteIfNewer>
                    <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
                  </configuration>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    

    干杯。

        2
  •  2
  •   Blessed Geek    14 年前

    一位同事给我发了一封电子邮件,这个答案很有效。触发跟踪 mvn build mvn package 但不是直接通过 mvn dependency:copy-dependencies .

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
              <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds>
            </configuration>
          </execution>
        </executions>
      </plugin>
    
        3
  •  0
  •   whaley    14 年前

    关于1:我建议基于这个插件和原型创建你的Maven项目。 http://code.google.com/p/maven-gae-plugin/ (如果您正在为GAE编写GWT应用程序,请参阅基于GWT的示例)。

    关于2:查看M2Eclipse插件,了解Eclipse中的完整Maven集成。它是由索纳泰克(马文的创造者)写的: http://m2eclipse.sonatype.org/