Java Planet

O Javie i jej otoczeniu

Maven automatyzacja tworzenia kolejnych wydań oprogramowania

Tworzenie nowych wydań oprogramowania bardzo często idzie w parze z tworzeniem nowych tagów w svn. Aby zautomatyzować ten proces polecam użyć pluginu mavena: maven-release-plugin

Utwórz nowy projekt maven.

$ mvn archetype:generate -DgroupId=com.example -DartifactId=moduleA -Dversion=0.0.1-SNAPSHOT

Umieszczamy projekt w svn w miejscu w tzw “trunku”. Dla naszego przykładu będzie to:

https://example.com/workspace/m2versioning/moduleA/trunk

Przygotuj miejsce na tagi w svn:

$ svn mkdir https://example.com/workspace/m2versioning/moduleA/tags

Dodaj odpowiednie wpisy do pom.xml*

<scm>
  <connection>scm:svn:https://example.com/workspace/m2versioning/moduleA/trunk</connection>
  <developerConnection>scm:svn:https://example.com/workspace/m2versioning/moduleA/trunk</developerConnection>
  <url>https://example.com/workspace/m2versioning/moduleA/trunk</url>
</scm>

<build>
 ...
   <plugins>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-release-plugin</artifactId>
     <!-- użyłem wersji beta ponieważ 2.0 nie chce działać -->
     <version>2.0-beta-9</version>
     <configuration>
        <tagBase>https://example.com/workspace/m2versioning/moduleA/tags</tagBase>
     </configuration>
   </plugin>
 </plugins>
 ...
</build>

Wykonaj:

$ mvn release:prepare

albo lepiej na początek:

$ mvn release:prepare -DdryRun=true

Odpowiadając na kilka pytań dotyczących wersji pod jaką chcesz releasować, jak ma nazywać się kolejna wersja rozwojowa.

What is the release version for “moduleA”? (com.example:moduleA) 0.0.1: :
What is SCM release tag or label for “moduleA”? (com.example:moduleA) moduleA-0.0.1: :
What is the new development version for “moduleA”? (com.example:moduleA) 0.0.2-SNAPSHOT: :

Rezultat:

  • w svn zostaje utworzony katalog https://example.com/workspace/m2versioning/moduleA/tags/moduleA-0.0.1 będący kopią https://example.com/workspace/m2versioning/moduleA/trunk/
  • w bieżącym katalogu (oraz w https://example.com/workspace/m2versioning/moduleA/trunk) mamy pom.xml ze zmodyfikowana wartością version na 0.0.2-SNAPSHOT

Jeśli użyłeś opcji dryRun, i nie jesteś zadowolony wykonaj

$ mvn release:clean

Aby dokończyć tworzenie kolejnego wydania, tak aby do repozytorium mavena trafiła właśnie wydana wersja oprogramowania należy wykonać:

$ mvn release:perform

Niestety proces tagowania nie pozwala(?) nam na dodanie własnego komentarza, będącego widocznego w svn jako opis otagowanej wersji. Dostajemy tylko skromne: [maven-release-plugin]  copy for tag moduleA-0.0.1

* – jeśli pracujesz na projekcie składającym się z wielu plików pom.xml (np projekt Java EnterpriseApplication z modułami EJB/WebApp) wpis należy dodać do parent pom.xml. Także cały proces należy przeprowadzić w tymże katalogu.

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

COMMENTS

No Comments

There are no comments posted yet. Be the first one!

Leave a Replay