2012-04-03 18 views
8

release:prepare ve release:perform (her ikisi de) hedeflerinde bazı Maven profillerini etkinleştirmek için bir çözüm bulamıyorum. Bunun gibi bir şey: sadece çalışmaz . releaseProfiles ayarının yalnızca release:perform sırasında çalıştığını biliyorum, bu yüzden arguments ayarının tam olarak istediğim gibi olmasına karşın, yürütme sırasında my-profile profili etkin değil. Yanlış bir şey mi yapıyorum?Her iki sürümde de profil etkinleştirme: hazırla ve bırak: gerçekleştir

cevap

5

Bu, yinelenen bir soru gibi görünüyor. Lütfen bu soruya bir bakın, bir cevabı var. maven release plugin ignores releaseProfile

Temelde bırakma eklentisi sürüm 2.2.1 Eğer serbest bırakılması sırasında etkinleştirmek için profillerini tanımlamak sağlayacak bir releaseProfiles parametre ekler. Ne istediğini yapmaktan onu yasaklamak bir ha ...

Düzenleme varmış gibi

http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html

Maalesef, görünüşe ben bu durumda kullanmış

bir şey olduğunu -P argümanını kullanmamakla birlikte, -Denv=release kullanarak bir ortam ayarı aracılığıyla profili tetikler. Daha sonra POM'da, env değerine dayanan profil aktivasyonuna sahibim. Bu her zaman benim için çalıştı.

+2

Cevabınız için teşekkür ederiz, @nwinkler. "releaseProfiles" parametresi sadece "release: perform" hedefi ile ilgilidir, dolayısıyla "release: prepare" sırasında çalışmaz. Ve haklısın, davranışları yine de çok garip. '-Dmy-release' değişkenine sahip ipucunuz aslında şu andaki geçici çözümüm. Soruma sahip olmak ve bunun hakkında düşünmek için herhangi bir yol önermemekten bahsetmedim.Ancak, bunun şimdilik bunu yapmanın tek (veya en azından en iyi) yolu olduğu anlaşılıyor. Ben zaten 'maven-release-plugin' 2.3-SNAPSHOT' sürümünü denedim ve stil düzgün çalışmıyor. Üzgün. –

4

Çünkü maven serbest bırakma eklentisi ek örneği başlatırsanız, ek argümanlar belirtmeniz gerekir. Eğer

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <arguments>${myReleaseArgs}</arguments> 
    </configuration> 
</plugin> 

ve yürütmeyi

mvn release:prepare release:perform -DmyReleaseArgs="-Pmy-release -DskipTests=true" -Pmy-release -DskipTests=true 

harf ve evet o çoğaltılamaz sokulmalıdır.

4

-Darguments = "- PmyProfile" işini yapıyor gibi görünüyor. hazırlayıp bırakın: Hem serbest bırakılması için profil etkinleştirerek Jenkins çalışır

1

her iki özelliği yukarıda iyi çalışıyor olsa da

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.5.1</version> 
     <configuration> 
     <releaseProfiles>myprofile</releaseProfiles> 
     <arguments>-Pmyprofile</arguments> 
     </configuration> 
    </plugin> 
    </plugins> 
</build > 

ayarlayarak gerçekleştirmek, ben dosya aktive profilleri kullanmak daha yararlı buldum. Ana pompamdaki profile sahip olduğumdan, 'master' profili olan eski konsept bir soruna neden oluyordu. Yani, her bir modülde keyfi olarak devreye giriyordu.

Bunu çözmek için dosya etkinleştirme yöntemini profilde kullandım. Daha da iyi çalışır ve bir bonus olarak Jenkins'deki serbest bırakmayı kolaylaştırır. Eclipse'de komut satırında, Jenkins'de, her yerde, maven dosyayı algılar ve maven-release-plugin'in yapılandırılması gerekmez. Ayrıca profil sadece doğru modülde aktiftir.

İlgili konular