在复制特定工件时,您需要绑定依赖项:将mojo 复制到生命周期,配置插件并指定要复制的工件。请参见以下示例:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <type>jar</type> <overWrite>false</overWrite> <outputDirectory>${project.build.directory}/alternateLocation</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> </build> [...] </project>
然后在执行mvn package之后,工件(junit)被复制到给定的alternateLocation。
如果需要, dependency:copy目标也可用于将刚刚构建的工件复制到自定义位置。它必须在安装阶段之后绑定,以便工件存在于存储库中。以下配置显示了如何:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-installed</id> <phase>install</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> <type>${project.packaging}</type> </artifactItem> </artifactItems> <outputDirectory>some-other-place</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> [...] </project>
如果您打算将此 mojo 配置为在命令行上执行,请使用:
mvn dependency:copy
您不能将配置放在executions标签内。您的配置应如下所示:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <configuration> <artifactItems> <artifactItem> <groupId>[ groupId ]</groupId> <artifactId>[ artifactId ]</artifactId> <version>[ version ]</version> <type>[ packaging ]</type> <overWrite>[ true or false ]</overWrite> <outputDirectory>[ output directory ]</outputDirectory> <destFileName>[ filename ]</destFileName> </artifactItem> </artifactItems> <!-- other configurations here --> </configuration> </plugin> </plugins> </build> [...] </project>