2012-10-02 19 views
5

Maven'den "test" aşamasının başlangıcında "bağımlılık: ağaç" hedef çıktısını almam gerekiyor, ihtiyacım olan bir sorunun hatalarını ayıklamaya yardımcı olmak için Her şeyin hangi versiyonlarının kullanıldığını bilmek. Ant'de kolay olurdu, Maven belgelerine baktım ve burada çok sayıda cevap var ama yine de bunu çözemiyorum, kesinlikle o kadar da zor değil mi? Proje POMMaven, "test" aşamasının başlangıcında "bağımlılık: ağaç" komutunu çalıştırıyor

+0

Eğer 'maven-bağımlılık-plugin'' sına aşamasında 'tree' gol çalıştırmak istediğiniz söylüyorsunuz? – maba

cevap

5

sonra dependency:tree sonra yürütülen orijinal surefire:test hedefe taşımak zorunda kalacaktır. Bunu yapmak için eklentileri çalıştırılmaları gereken sıraya koymak zorunda kalacaksınız.

maven-surefire-plugin'dan önce maven-dependency-plugin ekler tam bir pom.xml örneğidir. Orijinal default-test devre dışı ve yeni bir custom-test eklenir ve bu, dependency-tree yürütülmesinden sonra çalıştırılacak.

<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> 

Bu biraz garip ama bu idamları devre dışı bırakmak için bir yoldur.

3

Declare bu: Bu deseni benimseyebilir

<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> 

belirli inşa aşamasında herhangi bir eklentiyi tetiklemek için. Bakınız http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins. Yapılandırma aşamalarının bir listesi için http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference numaralı bölüme de bakın. Maba'nın işaret ettiği gibi, tree hedefinin doğru zamanda yürütüldüğünden emin olmak için fazı dikkatlice seçmeniz gerekir. Eğer dependency:tree test fazın başlangıcında yürütülüyor emin olmak istiyorsanız

+0

Bu, gerçek testlerden sonra 'bağımlılık' ağacını çalıştıracaktır. OP, test aşamasının başında koşmasını istediğini söylüyor. – maba

+0

İyi nokta. Bunun yerine “test-compile” ya da “compile” a bağlanabiliyordu. Umarım fişleri fazlara bağlamak için genel modeli anlamak sorunu çözmek için yeterli olacaktır. (Cevabımı düzenledim). –

+0

+1 'bağımlılık: ağaç' 'test' aşamasına nasıl ekleneceğini gösterir. 'Test' aşamasının başlangıcında koşmak için 'bağımlılık' ağacının nasıl elde edileceğini gösteren başka bir cevap ekleyeceğim. – maba

6

çıktısı verir testi bağımlılık ağacı:

mvn test dependency:tree -DskipTests=true 
İlgili konular