2012-10-02 10 views
5

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"

+0

Mówisz, że chcesz 'Maven zależność-plugin' uruchomić' tree' gola podczas 'test' fazie? – maba

Odpowiedz

5

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

3

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.

+0

To uruchomi 'zależność: drzewo' po faktycznych testach. OP mówi, że chce go uruchomić na początku fazy testowej. – maba

+0

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ź). –

+0

+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

6

Ta wola:

mvn test dependency:tree -DskipTests=true 
Powiązane problemy