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.
COMMENTS
No Comments