Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 如何将依赖项复制到gae war/WEB-INF/lib_Eclipse_Google App Engine_Maven 2 - Fatal编程技术网

Eclipse 如何将依赖项复制到gae war/WEB-INF/lib

Eclipse 如何将依赖项复制到gae war/WEB-INF/lib,eclipse,google-app-engine,maven-2,Eclipse,Google App Engine,Maven 2,我是从蚂蚁的角度来的,所以请原谅我。我意识到这里已经有很多关于如何处理依赖关系的问题,但似乎没有一个问题告诉我们如何处理需要做的事情 问题1: 目前,在使用maven war插件的同时,当我运行mvn war:war时,它会在目标文件夹中创建一个war文件夹 然而,我希望将所有依赖项的jar复制到googleeclipse插件设置的war/WEB-INF/lib(启用gae,禁用gwt),而不覆盖googleeclipse插件放置在那里的jar 我不希望设置war文件或war目录。我只需要用ga

我是从蚂蚁的角度来的,所以请原谅我。我意识到这里已经有很多关于如何处理依赖关系的问题,但似乎没有一个问题告诉我们如何处理需要做的事情

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

然而,我希望将所有依赖项的jar复制到googleeclipse插件设置的war/WEB-INF/lib(启用gae,禁用gwt),而不覆盖googleeclipse插件放置在那里的jar

我不希望设置war文件或war目录。我只需要用gae JAR复制/整合所有非gae JAR,这样当项目作为gae web应用程序运行时,Eclipse不会抱怨ClassNotFoundException

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

现在,我必须从shell窗口执行mvn命令(这两个窗口都不知道Eclipse会话的存在)。似乎唯一能自动完成的事情就是每当我更新依赖项时

有没有一种方法或任何eclipse插件可以让我在eclipse中运行mvn目标

其他信息

mvn依赖项:复制依赖项
持续复制到
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>

maven依赖插件
复制依赖项
过程资源
复制依赖项
${basedir}/war/WEB-INF/lib/
假的
假的
真的
gwt用户,gwt开发人员
我甚至试着换成绝对路径

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

/home/geek/eclipse/workspace/Demo autoshoppe/holycow
但是holycow目录仍然是空的,mvn仍然坚持复制到
target/dependency
目录。我目前的解决方案是将
target/dependency
软链接为
war/WEB-INF/lib
,这是一个非常糟糕的问题。为什么maven对outputDirectory规范不敏感?我正在使用Ubuntu的maven 2.2。

关于#1:我建议基于此插件和原型创建您的maven项目(如果您正在为GAE编写GWT应用程序,请参阅基于GWT的示例)


关于#2:查看m2eclipse插件,了解eclipse中maven的完整集成。这是Sonatype(maven的创建者)写的:

一位同事通过电子邮件给我这个答案,这个答案很有效。触发后续操作
mvn构建
mvn包
但不能直接通过mvn依赖项:复制依赖项

  <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>

org.apache.maven.plugins
maven依赖插件
复制依赖项
包裹
复制依赖项
${basedir}/war/WEB-INF/lib/
假的
假的
真的
gwt用户,gwt开发人员

我有真正的答案给你,伙计

使用“默认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>

org.apache.maven.plugins
maven依赖插件
默认cli
复制依赖项
${basedir}/war/WEB-INF/lib/
假的
假的
真的
gwt用户,gwt开发人员

干杯。

这仍然顽固地将jar文件复制到目标/依赖项。史蒂文·弗兰科拉的这首歌很管用。谢谢你,老兄……这首歌很管用……花了一天的时间才弄明白。谢谢你!最好只复制活动的依赖项,而不是过滤的依赖项(如果是相同的工件,则是不同的版本)。请注意,m2e—EclipseMaven插件—在Eclipse3.8中已经变得越来越好。