如何使用Maven插件将工件复制到多个目标

时间:2019-09-12 08:45:26

标签: maven maven-dependency-plugin artifact

您好,很棒的社区, 我想通过了解如何在maven打包阶段复制文件来再次使用您的帮助。 例如,假设我创建了一个名为myCustom.jar的jar,需要将其复制到:

  1. $ {basedir} \ firstLocation
  2. $ {basedir} \ secondLocation

目前,我正在使用像这样的maven-dependency-plugin:

<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>com.company.group</groupId>
                    <artifactId>artifact-id</artifactId>
                    <version>${project.version}</version>
                    <type>jar</type>
                    <outputDirectory>${basedir}/firstLocation</outputDirectory>
                    <destFileName>myCustom.jar</destFileName>
                </artifactItem>
                <artifactItem>
                    <groupId>com.company.group</groupId>
                    <artifactId>artifact-id</artifactId>
                    <version>${project.version}</version>
                    <type>jar</type>
                    <outputDirectory>${basedir}/secondLocation</outputDirectory>
                    <destFileName>myCustom.jar</destFileName>
                </artifactItem>
                ...
                ...
            <artifactItems>
        <configuration>
    <execution>
<executions>

此解决方案有效,但我最终会遇到无尽的意粉pom,这是维持噩梦的过程。 我尝试了以下方法:

<artifactItem>
<groupId>com.company.group</groupId>
<artifactId>artifact-id</artifactId>
<version>${project.version}</version>
<type>jar</type>
<outputDirectory>${basedir}/firstLocation</outputDirectory>
<outputDirectory>${basedir}/secondLocation</outputDirectory>
<destFileName>myCustom.jar</destFileName>

但是它没有复制任何内容(日志中也没有失败:)

有什么想法可以实现这个目标并使pom尽可能简短明了吗?

1 个答案:

答案 0 :(得分:1)

通常来说,您不应使用Maven来执行此操作。 Maven是构建工具,而不是通用部署/维护工具。

如果我遇到此问题,请执行以下操作之一(按优先顺序排列):

  • 选择一个文件夹作为目标文件夹,并将所有其他文件夹转换为该特定文件夹的符号链接。比配置将文件复制到所选的文件夹。
  • 使用构建外壳脚本,而不是直接调用Maven。该脚本将调用一次mvn,然后将结果复制到所有文件夹。
  • 使用脚本语言插件。例如groovy-maven-plugin允许内嵌Groovy脚本。该脚本然后可以进行复制。