2016-04-02 11 views
0

Maven yapımızda - varsayılan profiller ve testler için farklı bir profil kullanıyoruz. Testlerimiz varsayılan profil altında çalıştırıldığında, çeşitli nedenlerden dolayı kırılırlar. Bizim yapı ile takımdamaven'de - doğrulama aşaması varsayılan yürütme üzerinde çalıştırıldığında kullanıcıya nasıl bir mesaj gösterilir?

mvn -Pfoo verify 

kötü bizim yapı ile takımda

örn iyi

mvn verify 
Biz 'foo' başlığı altında testler ekibimiz insanları teşvik etmek istiyoruz

yaşam döngüsü ve onları olmadığında uyarın.

bu sorunu çözmek için Bulunduğum yaklaşım, varsayılan profil için yeni bir SureFire test oluşturmak tek amacı foo profil altında testler için kullanıcı anlatmak için yeni bir DefaultProfileWarningTest hariç tüm testleri hariç tutmaktır. benzer pom.xml bir yürütme ile

public class DefaultProfileWarningTest { 
    @Test 
    public void displayWarning() { 
     System.out.println("The tests aren't running - you should have run **mvn -Pfoo verify**"); 
    } 
} 

:

Yani testi gibi görünebilir

<profiles> 
    <profile> 
     <id>foo</id> 
     ...  
    </profile> 
    <profile> 
     <id>my-default-profile</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.19.1</version> 
        <configuration> 
         <includes> 
          <include>DefaultProfileWarningTest.java</include> 
         </includes> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
<profiles> 

Ama bu sinirleri bozuk kludge gibi görünüyor. Profil öğesini düzeltebileceğimizi varsayarsak, doğrulama aşaması varsayılan profil için kullanıcıya iletiyi görüntülemenin basit ve basit bir yolu var mı?

Soruma soru: Maven'de - doğrulama aşaması varsayılan yürütmede çalıştırıldığında kullanıcıya nasıl bir mesaj gösteriliyor?

+0

Neden bir iletiye ihtiyacınız var? Ayrıca maven-surefire-plugin'i bir profil kullanarak ne kullanıyorsunuz?Eğer bu testler, maven-failsafe-plugin'i kullanmanız gerektiğinden daha iyi bir entegrasyon testidir. Bu, eğer 'mvn temiz verfiy' yaparsanız, sadece temiz bir paket yaparsanız çalışırlar. Bir mvn konuşlandırma yapmak istiyorum entegrasyon testleri ... – khmarbaise

+0

Eğer bu testler kırıyorsa, bu testleri çalıştırmanız için onları test etmelisiniz, aksi takdirde bu testleri çalıştırmanız için test yapmazsınız ... – khmarbaise

+0

Teşekkürler @khmarbaise - Bu iyi bir soruydu - Bu seçeneği araştırdım. – hawkeye

cevap

0

Olası bir çözüm, echo görevine sahip bir ileti veren maven-antrun-plugin öğesinin yürütülmesini tanımlamak olabilir. skip özniteliğini kullanarak foo profilinin altında çalıştırıldığında atlanır. Anahtar, varsayılan olarak foo profilinde ve false profilinde true olarak ayarlanan Maven özelliğinden yapılabilir.

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <echo>The tests aren't running - you should have run mvn -Pfoo verify</echo> 
       </target> 
       <skip>${isRightProfile}</skip> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Sonra şöyle profillerinizi yapılandırabilirsiniz:

aşağıdaki düşünün foo tercih etkinleştirildiğinde

<profile> 
    <id>foo</id> 
    <properties> 
     <isRightProfile>true</isRightProfile> 
    </properties> 
</profile> 
<profile> 
    <id>my-default-profile</id> 
    <properties> 
     <isRightProfile>false</isRightProfile> 
    </properties> 
    <!-- rest unchanged --> 
</profile> 

, isRightProfile özelliği true ayarlanır, böylece yürütme Antrun eklentisi atlanacak ve mesaj basılmayacak. Varsayılan profil etkinleştirildiğinde, bu özellik false olarak ayarlanacak ve mesajlar yankılanacaktır.

0

Bir mesaj yazdırmak için echo-maven-plugin gibi uygun bir eklentiyi kullanabilirsiniz.

<plugin> 
    <groupId>com.soebes.maven.plugins</groupId> 
    <artifactId>echo-maven-plugin</artifactId> 
    <version>0.2</version> 
    <executions> 
    <execution> 
     <phase>initialize</phase> 
     <goals> 
     <goal>echo</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <echos> 
     <echo>This is the Text which will be printed out.</echo> 
    </echos> 
    </configuration> 
</plugin> 

Belli bir profili kullanmak için zorlayabilir maven-enforcer-plugin kullanmalıdır belirli bir profili kullanmaya zorlamak istiyorsanız.

İlgili konular