我有一个有 5 个依赖项的 Maven 项目。其中两个(带有其传递依赖项)我需要在自定义位置拥有,让我们说 client/plugins
.而其余的项目依赖项(也有传递依赖项)我需要在另一个位置,让我们说 client/modules
.遵循 Apache Maven 文档中的示例,这是我的 <build>
堵塞:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactItems>
<artifactItem>
<groupId>my.groupid</groupId>
<artifactId>my-artifactid-one</artifactId>
<version>1.0-SNAPSHOT</version>
<outputDirectory>client/modules</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>my.groupid</groupId>
<artifactId>my-artifactid-one</artifactId>
<version>1.1-SNAPSHOT</version>
<outputDirectory>client/modules</outputDirectory>
</artifactItem>
</artifactItems>
<outputDirectory>client/plugins</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
当我跑
mvn -U clean package
命令,Maven 将所有项目依赖项及其传递依赖项复制到 client/plugins
.因此,它会忽略我为特定 Artifact 设置的配置。我该如何设置?
最佳答案
看起来仅使用一个目标是不可能实现这一目标的。所以我定义了两个 copy-dependencies
目标。然后指定不同的输出目录并使用 excludeArtifactIds
参数以排除不需要的 Artifact 。它看起来像这样:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-plugins</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>client/plugins</outputDirectory>
<excludeArtifactIds>module-artifact-one, module-artifact-two </excludeArtifactIds>
</configuration>
</execution>
<execution>
<id>copy-modules</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>client/modules</outputDirectory>
<excludeArtifactIds>plugin-artifact-one, plugin-artifact-two</excludeArtifactIds>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我跑
mvn -U clean package
它按我现在的预期工作。
关于maven - 将具有依赖项的特定 Artifact 复制到特定文件夹,将其余依赖项复制到另一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46885246/