Maven在“测试”阶段开始时运行“依赖:树”

时间:2012-10-02 09:26:55

标签: maven phase

我需要在“测试”阶段开始时从Maven获取“依赖:树”目标输出,以帮助调试我需要知道正在使用的所有版本的问题。

在Ant中,它本来很简单,我已经浏览了Maven文档和许多答案,但仍然无法弄明白,当然这不是很难吗?

3 个答案:

答案 0 :(得分:11)

这将输出测试依赖树:

mvn test dependency:tree -DskipTests=true

答案 1 :(得分:6)

如果您想确保在dependency:tree阶段的开始时运行test,那么您必须将原来的surefire:test目标移至dependency:tree之后进行{ {1}}。要做到这一点,你必须按照应该运行的顺序放置插件。

以下是一个完整的pom.xml示例,可在maven-dependency-plugin之前添加maven-surefire-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>

{{1}}

这有点尴尬,但这是禁用执行的方法。

答案 2 :(得分:4)

在您的项目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>

您可以采用此模式在特定构建阶段触发任何插件。请参阅http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins

另请参阅http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference以获取构建阶段的列表。正如maba指出的那样,您需要仔细选择阶段,以确保在正确的时间执行tree目标。