我需要在“测试”阶段开始时从Maven获取“dependency:tree”目标输出,以帮助调试一个问题,我需要了解该问题所使用的所有版本。
在Ant中,这很容易,我浏览了Maven文档和此处的众多答案,但仍无法弄清楚,这难道不是那么难吗?
最佳答案
如果要确保dependency:tree
在test
阶段的开始运行,则必须将原始surefire:test
目标移至dependency:tree
之后进行。为此,您必须将插件按应运行的顺序放置。
这是一个完整的pom.xml
示例,在maven-dependency-plugin
之前添加了maven-surefire-plugin
。原始的default-test
被禁用,并且添加了新的custom-test
,并且将在dependency-tree
执行后运行该新的ojit_code。
<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>
有点尴尬,但这是禁用执行的方法。
关于Maven在 "dependency:tree"阶段开始时运行 "test",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12687743/