我创建了一个maven配置文件,里面有maven-dependency-plugin。
以下是我的插件
<profile>
<id>copy-dep</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-external</id>
<phase>none</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
<configuration>
<excludeGroupIds>group ids that I need to exclude</excludeGroupIds>
<excludeArtifactIds>artifact ids that I need to exclude</excludeArtifactIds>
<includeArtifactIds>artifact ids that I need to include</includeArtifactIds>
<includeGroupIds>group id that I need to include</includeGroupIds>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</profile>
我使用下面的命令来执行
mvn dependency:copy-dependencies -DoutputDirectory=libs -Pcopy-dep
但是当我执行这个命令时,它寻找所有定义在pom中的依赖关系,并把它们也复制过来。
我试着把不需要的依赖项放在exclude标签里,但没有用,然后我又试着删除exclude标签,保留需要的依赖项,但也没有用。
在我的 pom 中,我使用 maven assembly 插件来分离出所需的依赖项,我不想让这些依赖项与创建的 profile 一起被复制。
有没有更好的方法来实现同样的目的。
只复制 "列出的 "工件(本例中只复制junit和mockito)。
<profile>
<id>copy-dep</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<configuration>
<artifactItems>
<artifactItem>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</artifactItem>
<artifactItem>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.28.2</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</profile>
并执行它。
mvn dependency:copy -Pcopy-dep
你需要告诉Maven要执行哪一个。所以要写。
mvn dependency:copy-dependencies@copy-external -DoutputDirectory=libs -Pcopy-dep
顺便说一下,把这个放到配置文件中可能没有必要。