指定 Maven 的库目标
Specify Library Target of Maven
如何告诉 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>
以错误结束:
Artifact has not been packaged yet. When used on reactor artifact, copy should be executed after packaging: see MDEP-187.
dependency:copy-dependencies
应该可以胜任。
看起来您正试图让 Maven 做一些与它期望您做的不同的事情(例如,这里使用 war
作为输入和输出文件夹)。作为一个经验法则,永远不要试图与 Maven 战斗,你最终会输的。遵循(几乎未记录的)Maven Way™ 或使用另一个 更多 灵活的工具(例如 Ant+Ivy 或 Gradle)。
如果您想在 Eclipse 中通过 Google Eclipse 插件将 GWT 与 Maven 结合使用,请查看 https://web.archive.org/web/20130619170526/https://developers.google.com/eclipse/docs/faq#gwt_with_maven and https://code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven
要直接回答您的问题,假设您将 warSourceDirectory
从其 src/main/webapp
默认值更改为 war
的 <packaging>war</packaging>
项目,然后尝试 war:inplace
.
不过,推荐的方法(参见上面的链接)是使用 war:exploded
(or war:war
,即简单的 mvn package
) 和 运行 GWT DevMode 使用 webappDirectory
,而不是 warSourceDirectory
。
如何告诉 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>
以错误结束:
Artifact has not been packaged yet. When used on reactor artifact, copy should be executed after packaging: see MDEP-187.
dependency:copy-dependencies
应该可以胜任。
看起来您正试图让 Maven 做一些与它期望您做的不同的事情(例如,这里使用 war
作为输入和输出文件夹)。作为一个经验法则,永远不要试图与 Maven 战斗,你最终会输的。遵循(几乎未记录的)Maven Way™ 或使用另一个 更多 灵活的工具(例如 Ant+Ivy 或 Gradle)。
如果您想在 Eclipse 中通过 Google Eclipse 插件将 GWT 与 Maven 结合使用,请查看 https://web.archive.org/web/20130619170526/https://developers.google.com/eclipse/docs/faq#gwt_with_maven and https://code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven
要直接回答您的问题,假设您将 warSourceDirectory
从其 src/main/webapp
默认值更改为 war
的 <packaging>war</packaging>
项目,然后尝试 war:inplace
.
不过,推荐的方法(参见上面的链接)是使用 war:exploded
(or war:war
,即简单的 mvn package
) 和 运行 GWT DevMode 使用 webappDirectory
,而不是 warSourceDirectory
。