我是从Ant的角度出发的,所以请原谅我。我知道这里已经有很多关于maven依赖关系的问题了,但是他们似乎都没有告诉我们该怎么做。
问题1 : 目前,结合使用maven-war-plugin,当我运行mvn war:war时,它会在目标文件夹中创建一个war文件夹。
但是,我希望将所有依赖项的jars复制到google eclipse插件设置的war / WEB-INF / lib(启用gae,禁用gwt),而不会覆盖google eclipse插件放在那里的jar。
我不想设置war文件或war目录。我只需要用gae jar复制/整合所有非gae罐子,这样当项目作为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仍然存在复制到target/dependency
目录。我目前的解决方案是将target/dependency
软链接为war/WEB-INF/lib
,这是一个非常糟糕的问题。为什么maven对outputDirectory规范不敏感?我正在使用Ubuntu的maven 2.2。
答案 0 :(得分:7)
我有真正的答案,我的男人。
使用“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>
干杯。
答案 1 :(得分:2)
一位同事给我发了电子邮件,这个答案有效。触发后续操作
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>
答案 2 :(得分:0)
关于#1:我建议根据此插件和原型http://code.google.com/p/maven-gae-plugin/创建您的maven项目(如果您正在为GAE编写GWT应用程序,请参阅基于GWT的示例)。
关于#2:在eclipse中查看m2eclipse插件以获得完整的maven集成。它由Sonatype(maven的创造者)编写:http://m2eclipse.sonatype.org/