如何告诉Maven将依赖项复制到特定位置?
附带故事:我在Eclipse中有一个GWT项目,它也是一个用于大型项目的Maven模块。这个GWT项目依赖于某些库,我需要将它们复制到<project-dir>/war/WEB-INF/lib
中。我怎么能告诉Maven呢?
编辑:我找到了复制单个依赖项的方法 - 但有没有办法用简单的指令复制所有依赖项?
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<overWrite>false</overWrite>
<outputDirectory>${basedir}/war/WEB-INF/lib</outputDirectory>
<destFileName>optional-new-name.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/wars</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
我也试过这个:
</dependencies>
<build>
<outputDirectory>${project.basedir}/war/WEB-INF/classes</outputDirectory>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<!-- up to <phase>deploy</phase> -->
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/war/WEB-INF/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
结束时出现错误说:
神器尚未打包。当用于反应器工件时,应在包装后执行复制:参见MDEP-187。
答案 0 :(得分:0)
dependency:copy-dependencies
应该完成这项工作。
答案 1 :(得分:0)
看起来你正试图让Maven做出与预期不同的事情(例如,这里使用war
作为输入和输出文件夹)。根据经验,永远不要试图与Maven战斗,你最终会失败。按照(几乎没有记录的)Maven Way™或者使用另一个 more 灵活工具(例如Ant + Ivy或Gradle)。
如果您想在Eclipse中使用带有Google Plugin for Eclipse的Maven和Maven,请查看https://web.archive.org/web/20130619170526/https://developers.google.com/eclipse/docs/faq#gwt_with_maven和https://code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven
要直接回答您的问题,假设您的<packaging>war</packaging>
项目已将warSourceDirectory
从其src/main/webapp
默认值更改为war
,请尝试{ {3}}。
但是推荐的方法(参见上面的链接)是使用war:inplace
(或war:exploded
,即一个简单的mvn package
)并使用webappDirectory
运行GWT DevMode,而不是{{1 }}