我需要在“test”阶段开始时从Maven获取“dependency:tree”目标输出,以帮助调试一个问题,我需要知道正在使用的每个版本。在Ant中很容易,我已经查看了Maven文档和这里的许多答案,但仍然无法弄清楚,肯定不是那么难吧?
这将输出测试依赖树:
mvn test dependency:tree -DskipTests=true
test
阶段的开始时运行dependency:tree
,那么你需要将原始的surefire:test
目标移动到后面执行dependency:tree
。为此,您需要按照应该运行的插件顺序来放置插件。pom.xml
示例,它在maven-surefire-plugin
之前添加了maven-dependency-plugin
。原始的default-test
已被禁用,并添加了一个新的custom-test
,这个测试将在dependency-tree
执行后运行。<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12687743</artifactId>
<version>1.0-SNAPSHOT</version>
<name>${project.artifactId}-${project.version}</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>dependency-tree</id>
<phase>test</phase>
<goals>
<goal>tree</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<executions>
<execution>
<id>default-test</id>
<!-- Using phase none will disable the original default-test execution -->
<phase>none</phase>
</execution>
<execution>
<id>custom-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
有点尴尬,但这是禁用执行的方法。
在您的项目POM文件中声明如下:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>tree</goal>
</goals>
</execution>
</executions>
</plugin>
tree
目标。dependency:tree
。 OP表示他希望它在测试阶段开始时运行。 - mabatest-compile
甚至是compile
。希望理解将插件绑定到阶段的一般模式足以解决问题。(编辑了我的答案)。 - Duncan Jones
maven-dependency-plugin
在test
阶段运行tree
目标吗? - maba