Maven запускает «зависимость: дерево» в начале фазы «тестирования»

StackOverflow https://stackoverflow.com//questions/12687743

  •  12-12-2019
  •  | 
  •  

Вопрос

Мне нужно получить выходные данные цели «зависимость: дерево» от Maven в начале фазы «тестирования», чтобы помочь отладить проблему, для которой мне нужно знать, какие версии всего используются.

В Ant это было бы легко, я просмотрел документацию Maven и многочисленные ответы здесь, но до сих пор не могу понять, ведь это не так уж и сложно?

Это было полезно?

Решение

Если вы хотите быть уверены, что dependency:tree запускается в начале test фазу, то вам придется переместить оригинал surefire:test цель проведения после dependency:tree.Для этого вам придется разместить плагины в том порядке, в котором они должны запускаться.

Вот полный 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>

Это немного неловко, но именно так можно отключить казни.

Другие советы

Это выводит дерево зависимости теста:

mvn test dependency:tree -DskipTests=true
.

Объявление об этом в вашем проекте 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/ВВЕДЕНИЕ / ВВЕДЕНИЕ TO-LIFECYCLE.HTML # Плагины .

См. Также http://maven.apache.org / guides / Введение / Введение в LifeCycleclecleCle.html # Lifecycle_Reference Для списка фаз сборки.Как отмечает MABA, вам необходимо тщательно выбирать фазу, чтобы гарантировать, что цель tree выполняется в правильное время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top