我使用
package
让 Maven 生成目标 JAR 文件,并使用 dependency:build-classpath
生成 cp.txt
列出所有依赖 JAR,我不想将其捆绑到目标 JAR 中:
mvn package dependency:build-classpath
有没有一种方法可以让类路径构建与打包一起自动发生——而无需我在命令行上明确请求两者?
下面的命令执行maven
build-classpath
插件的dependency
目标:
mvn dependency:build-classpath
但是当你执行
mvn package
时,你实际上指示maven从所有阶段传递,直到package
阶段,在默认生命周期(package
阶段所属)。当 Maven 通过这些阶段时,它会执行所有附加的插件目标。
Maven 默认情况下不会将
dependency:build-classpath
目标附加到任何阶段(尽管根据打包类型它会附加一些其他目标)。您需要显式地执行此操作,只需向 pom.xml
声明插件目标(还提供相应的配置):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<goals>
<goal>build-classpath</goal>
</goals>
<configuration>
<outputFile>cp.txt</outputFile>
</configuration>
</execution>
</executions>
</plugin>
Maven 然后会将上述目标附加到
generate-sources
阶段(这是 目标的默认阶段),当该阶段到来时,dependency:build-classpath
插件目标将执行。
结论:
问:如何自动处理多个“目标”?
A:您将这些目标声明为
pom.xml
(并可选择覆盖要附加到的默认阶段),当 Maven 从该阶段传递时,作为 maven 生命周期的一部分,它们将自动执行。