Potrzebuję uzyskać wyniki celów "zależność: drzewo" od Mavena na początku fazy "testu", aby pomóc w debugowaniu problemu, którego potrzebuję wiedzieć, jakie wersje wszystkiego są używane. W Ant byłoby to łatwe, przejrzałem dokumenty Mavena i liczne odpowiedzi tutaj, ale nadal nie mogę tego rozgryźć, na pewno nie jest to takie trudne?Maven uruchom "zależność: drzewo" na początku fazy "testowej"
Odpowiedz
Jeśli chcesz mieć pewność, że dependency:tree
prowadzony jest na początku fazy test
następnie trzeba będzie przesunąć oryginalną surefire:test
cel prowadzonych po dependency:tree
. Aby to zrobić, będziesz musiał umieścić wtyczki w kolejności, w której powinny być uruchomione.
Oto pełny przykład, który dodaje maven-dependency-plugin
przed maven-surefire-plugin
. Oryginalny default-test
jest wyłączony, a nowy custom-test
został dodany i ten zostanie uruchomiony po wykonaniu 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>
Jest to trochę niewygodne, ale to jest sposób, aby wyłączyć egzekucje. Wyjście drzewo zależność Test
zadeklarować ten w POM projektu:
<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>
Można przyjąć ten wzór do wywołać żadnej wtyczki podczas określonego etapu budowy. Zobacz http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.
Zobacz także http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference, aby uzyskać listę etapów budowy. Jak zaznacza maba, musisz ostrożnie wybrać fazę, aby zapewnić, że cel tree
zostanie wykonany we właściwym czasie.
To uruchomi 'zależność: drzewo' po faktycznych testach. OP mówi, że chce go uruchomić na początku fazy testowej. – maba
Dobra uwaga. Zamiast tego może połączyć się z 'test-compile' lub nawet' compile'. Mam nadzieję, że zrozumienie ogólnego schematu wiązania wtyczek do faz będzie wystarczające do rozwiązania problemu. (Edytowałem moją odpowiedź). –
+1 za pokazanie, jak dodać 'dependency: tree' do fazy' test'. Dodam kolejną odpowiedź, która pokazuje, jak uruchomić 'dependency: tree' na początku fazy' test'. – maba
Ta wola:
mvn test dependency:tree -DskipTests=true
Mówisz, że chcesz 'Maven zależność-plugin' uruchomić' tree' gola podczas 'test' fazie? – maba