2012-04-03 11 views
8

Nie mogę znaleźć rozwiązania aktywującego niektóre profile Maven na release:prepare i release:perform (oba). Coś takiego:Aktywacja profilu w obu wersjach: przygotuj i zwolnij: wykonaj:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.1</version> 
    <configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pmy-release</arguments> 
    </configuration> 
</plugin> 

po prostu nie działa. Wiem, że ustawienie releaseProfiles działa tylko podczas release:perform, więc po prostu ustawienie arguments jest dokładnie tym, czego chcę, ale profil my-profile nie jest aktywny podczas wykonywania. czy robię coś źle?

Odpowiedz

5

To wygląda na duplikat pytania. Proszę spojrzeć na to pytanie, ma odpowiedź. maven release plugin ignores releaseProfile

Zasadniczo wersja 2.2.1 dodatku do wydania dodaje parametr releaseProfiles, który pozwala zdefiniować profile, które mają być włączone podczas wydawania.

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

Niestety, wygląda na to, że to błąd, który zabrania go od robienia tego, co chcesz ...

Edit

Jedną rzeczą, która Użyłem w tym przypadku jest nie używając argumentu -P, ale raczej wyzwalając profil poprzez ustawienie środowiska przy użyciu -Denv=release. Następnie w POM mam aktywację profilu opartą na wartości env. To zawsze działa dla mnie.

+2

Dzięki za odpowiedź, @nwinkler. Parametr 'releaseProfiles' jest powiązany tylko z' release: perform', więc nie działa podczas 'release: prepare'. I masz rację, jego zachowanie jest tak naprawdę dziwne. Twoja wskazówka ze zmienną '-Dmy-release' jest w rzeczywistości moim bieżącym obejściem. Nie wspomniałem o tym, by zadać moje pytanie wprost i nie sugerować żadnej ścieżki, by o tym myśleć.Wydaje się jednak, że jest to jedyny (lub przynajmniej najlepszy) sposób robienia tego na razie. Próbowałem już '2.3-SNAPSHOT' wersji' maven-release-plugin' i stil nie działa poprawnie. Smutny. –

4

Ponieważ dodatek release maven uruchamia dodatkową instancję, musisz podać dodatkowe argumenty. Ci rozróżniana

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

i wykonanie

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

i tak musi być powielane.

4

-Darguments = "- PmyProfile" wydaje się wykonywać tę pracę.

1

Działa w Jenkins poprzez aktywację profilu zarówno produkcji: przygotowanie i zwolnić: wykonać poprzez ustawienie właściwości zarówno

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

Chociaż powyższe działa świetnie, znalazłem bardziej przydatna w użyciu profili aktywowanych plików. Stara koncepcja z profilem "wzorcowym" powodowała problem, ponieważ miałem profil w mojej nadrzędnej pom. Oznaczało to, że był aktywowany w każdym module, arbitralnie.

Aby rozwiązać ten problem, użyłem metody aktywacji pliku w profilu. Działa jeszcze lepiej i jako bonus upraszcza wydanie w Jenkins. W Eclipse, w linii poleceń, w Jenkins, wszędzie wszędzie, maven wykrywa plik i wtyczka maven-release nie musi być skonfigurowana. Dodatkowo profil jest aktywny tylko w odpowiednim module.

Powiązane problemy