2011-09-08 13 views
11

İki Maven profil profilim A ve profil-B var. "B" sadece "A" aktif değilse etkinleştirilmelidir. YaniMaven: Sadece B profili etkin değilse profil A'yı etkinleştirin mi?

mvn install 

profil-B infaz (ama profil-A değil) çağrının olsaydı. Ama sonra

mvn install -Pprofile-A 

çağırır yalnızca profil-A infaz (ama profil-B değil) eğer.

Bunu başarmak için pom.xml'mi nasıl yazmam gerektiğine dair ipuçları var mı?

Zaten bu denedim ama çalışmıyor: Ben beklendiği gibi çalışmak için örnek komut satırı için düşünüyorum

<profiles> 
    <profile> 
    <id>profile-A</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
    </activation> 
    ... 
    </profile> 

    <profile> 
    <id>profile-B</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
     <property> 
     <name>!profile-A</name> 
     </property>  
     ... 
    </activation> 
    ... 
    </profile> 
</profiles> 

cevap

8

, tek ihtiyacınız profil B için <activeByDefault>true</activeByDefault> olan

http://maven.apache.org/guides/introduction/introduction-to-profiles.html durumları:

POM içindeki bir profil komut satırında veya etkinleştirme contası aracılığıyla etkinleştirildiğinde, varsayılan olarak tüm profiller otomatik olarak devre dışı bırakılır. incir.

+0

Sadece 15 dakika boyunca beni rahatsız eden bir noktaya açıklık getirmek istedim. "ActiveByDefault" ile ilgili yukarıdaki bağlantının en son sürümünden (vurgu benim): "Daha önce açıklanan yöntemlerden biri kullanılarak aynı POM ** içinde başka bir profil ** etkinleştirilmedikçe, bu profil tüm yapılarda otomatik olarak aktif olacaktır." Benim durumumda, B bileşenini ana POM'a ve A profilini çok modüllü bir yapıda bir yaprak POM'ına eklemiştim. Bu yapılandırmada, profil A komut satırından etkinleştirildiğinde profil B devre dışı bırakılmadı. A ve B profillerini aynı POM'ye taşımak istenen davranışı üretmiştir. –