Eclipse 如何将依赖项复制到gae war/WEB-INF/lib
我是从蚂蚁的角度来的,所以请原谅我。我意识到这里已经有很多关于如何处理依赖关系的问题,但似乎没有一个问题告诉我们如何处理需要做的事情 问题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目标 其他信息: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
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中已经变得越来越好。