Maven запускает «зависимость: дерево» в начале фазы «тестирования»
Вопрос
Мне нужно получить выходные данные цели «зависимость: дерево» от 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
выполняется в правильное время.