2012-04-03 3 views
8

Ich kann keine Lösung für die Aktivierung einiger Maven Profil auf release:prepare und release:perform (beide) Ziele finden. Etwas wie das:Profilaktivierung auf beiden Releases: Vorbereitung und Freigabe: Führen Sie

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

funktioniert einfach nicht. Ich weiß, dass releaseProfiles Einstellung funktioniert nur während release:perform, so dass ich gerade, dass arguments Einstellung ist genau das, was ich will, aber my-profile Profil ist nicht aktiv während der Ausführung. Mache ich etwas falsch?

Antwort

5

Das sieht wie eine doppelte Frage aus. Bitte werfen Sie einen Blick auf diese Frage, sie hat eine Antwort. maven release plugin ignores releaseProfile

Grundsätzlich Version 2.2.1 des Release-Plugin fügt einen releaseProfiles Parameter, der es Ihnen ermöglicht, die Profile zu definieren, während der Freigabe zu ermöglichen.

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

Leider sieht es aus wie es ein Fehler ist, dass es zu tun, verbieten, was Sie wollen ...

bearbeiten

Eine Sache, die ich in diesem Fall verwendet haben, ist Verwenden Sie nicht das -P Argument, sondern das Auslösen des Profils durch eine Umgebungseinstellung mit -Denv=release. Dann habe ich im POM die Profilaktivierung basierend auf dem Wert env. Das hat immer für mich funktioniert.

+2

Danke für Ihre Antwort, @nwinkler. Der Parameter 'releaseProfiles' bezieht sich nur auf das' release: perform'-Ziel, so dass er während 'release: prepare' nicht funktioniert. Und du hast recht, sein Verhalten ist sowieso wirklich seltsam. Ihr Tipp mit '-Dmy-release' ist eigentlich meine aktuelle Problemumgehung. Ich habe es nicht erwähnt, um meine Frage direkt zu stellen und keinen Gedankengang zu machen.Es scheint jedoch, dass dies der einzige (oder zumindest der beste) Weg ist, dies vorerst zu tun. Ich habe schon '2.3-SNAPSHOT' Version von' Maven-Release-Plugin' probiert und stil funktioniert nicht richtig. Traurig. –

4

Da maven release plugin zusätzliche Instanz starten muss, müssen Sie zusätzliche Argumente angeben. Für Fall Sie

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

und Ausführung

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

und ja, es dupliziert werden müssen.

4

-Darguments = "- PmyProfile" scheint die Aufgabe zu erfüllen.

1

Es in Jenkins arbeitet durch das Profil der beiden Release Aktivierung: Vorbereitung und Freigabe: durchführen, indem Sie beide Eigenschaften festlegen

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

Auch wenn die oben funktioniert gut, fand ich mehr nützliche Datei aktiviert Profile zu verwenden. Das alte Konzept mit einem "Master" Profil verursachte ein Problem, da ich das Profil in meinem Eltern Pom hatte. Das heißt, es wurde in jedem einzelnen Modul willkürlich aktiviert.

Um es zu lösen, habe ich die Dateiaktivierungsmethode im Profil verwendet. Es funktioniert sogar noch besser und als Bonus vereinfacht es die Veröffentlichung in Jenkins. In Eclipse, in der Befehlszeile, in Jenkins, alias überall, entdeckt Maven die Datei und das maven-release-plugin muss nicht konfiguriert werden. Außerdem ist das Profil nur im richtigen Modul aktiv.

Verwandte Themen