我需要在“测试”阶段开始时从Maven获取“dependency:tree”目标输出,以帮助调试一个问题,我需要了解该问题所使用的所有版本。

在Ant中,这很容易,我浏览了Maven文档和此处的众多答案,但仍无法弄清楚,这难道不是那么难吗?

最佳答案

如果要确保dependency:treetest阶段的开始运行,则必须将原始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/

10-12 19:10