2009-06-13 12 views
7

Wenn wir Projekte veröffentlichen, ist es normalerweise jedes Mal dasselbe. Gibt es irgendwelche Argumente oder Eigenschaften, die ich zur Freigabe hinzufügen kann: prepare, die das Freigeben von Mustern im Stapelmodus ermöglichen?Maven Release-Eigenschaften

Beispiel:

 
What is the release version for "MyProject"? (company.jar.site:myproject) 0.0.1: : 
What is SCM release tag or label for "MyProject"? (company.jar.site:myproject) MyProject-0.0.1: : 
What is the new development version for "MyProject"? (company.jar.site:myproject) 0.0.2-SNAPSHOT: : 

Es wäre schön, so etwas zu tun:

 
mvn -B release:perform -DreleaseVersion:$nextMinorVersion$ or 
mvn -B release:perform -DreleaseVersion:$nextPatchVersion$ or 
mvn -B release:perform -Dtag:v$nextPatchVersion$ or 
mvn -B release:perform -Dtag:v$nextPatchVersion$-someCustomNaming 

Wenn so etwas wie dies noch nicht vorhanden ist, werde ich eine benutzerdefinierte Mojo schaffen, dies zu tun.

Alternativ, während der oben genannten Eingabeaufforderungen verwenden wir standardmäßig die erste Frage, 'v' + aktuelle Version auf der zweiten, und nächste kleinere auf der letzten. Wenn wir diese irgendwie ändern könnten, würde das das unmittelbare Problem lösen.

Vielen Dank im Voraus.

Antwort

7
mvn -B release:prepare release:perform 

-B ist für den Batch-Modus, es verwendet die Standardwerte, die es im Nicht-Batch-Modus bietet. Im Allgemeinen wird für X.Y.Z-SNAPSHOT eine Version von X.Y.Z veröffentlicht und der neue Snapshot wird auf X.Y. (Z + 1) -SNAPSHOT gesetzt.

Wie bei allen Dingen Maven, können Sie diese Namenskonvention kämpfen und viele Kopfschmerzen haben, oder geben Sie auf und entscheiden Sie, Ihre Versionen und Etiketten werden die Maven-Art und bekommen viele kostenlos. Ich habe gekämpft und verloren. Nur eine der vielen Möglichkeiten, die Sie Maven komplett übergeben müssen, wenn Sie es verwenden.

Ich bin vollkommen glücklich, so getan zu haben, meine eigenen Pläne durchzusetzen, ist sowieso keine gute Idee.

+0

Das einzige Problem dabei ist, dass ich in der Regel den angebotenen Tag-Namen ändern möchte.Weil meine Eltern artifactId normalerweise "foo-parent" ist und ich möchte, dass das Tag foo-1.2.3 statt foo-parent-1.2.3 lautet. –

2

Teil Antwort, nach dem comment:

Um den Tag-Namen zu ändern, verwenden Sie das -Dtag=xxx Argument release:prepare. Details finden Sie unter the release:prepare documentation. Um dies zu tun in einer vollautomatischen Weise

Ungeprüfte Code

Warnung, benötigen Sie einen Konfigurationseintrag zu Ihrem pom.xml hinzuzufügen, wo Sie den Tag-Namen gesetzt würde:

<maven-release-plugin> 
    <configuration> 
     <tag>parent-${releaseVersion}</tag> 
    </configuration> 
</maven-release-plugin> 
1

Die So wie ich es gemacht habe ist Performing a Non-interactive Release Using a properties file.

Sie erstellen ein release.properties in der Wurzel des Aggregator-Projekt (die, die Verpackung hat: pom) und für jedes Projekt hinzufügen Sie zwei Eigenschaften der folgenden Form:

project.rel.<groupId>\:<artifactId>=<releaseVersion> 
project.dev.<groupId>\:<artifactId>=<nextSnapshotVersion> 

wenn Sie wollen verwenden, um eine bestimmte wörtliche für Ihren Tag fügen Sie die folgende Eigenschaft

scm.tag=<tagLiteral> 

das folgende ist ein Beispiel, wo beide Dinge getan werden (die Version jedes Moduls angeben und definiert die wörtliche verwendet werden im SCM zu markieren):

scm.tag=my-project-0.2.1 
project.rel.org.monachus.monkeyisland\:my-project=0.2.1 
project.dev.org.monachus.monkeyisland\:my-project=0.2.2-SNAPSHOT 
project.rel.org.monachus.monkeyisland\:module-a=0.1.1 
project.dev.org.monachus.monkeyisland\:module-a=0.1.2-SNAPSHOT