2012-11-12 5 views
13

Mam projekt w wersji 0.0.1-SNAPSHOT, a kiedy budujemy go za pomocą TeamCity, otrzymujemy również właściwość build.vcs.number, która jest wersją Subversion, która uruchomiła kompilację.Zarządzaj właściwością wersji projektu, aby usunąć SNAPSHOT?

W naszych zwojach tworzymy plik zip o nazwie coś w rodzaju foo-distribution-0.0.1-SNAPSHOT.zip, ale zastanawiałem się, czy istnieje sposób, w jaki można wstawić właściwość build.vcs.number do nazwy artefaktu podać foo-distribution-0.0.1.12345-SNAPSHOT.zip?

Czy istnieje wbudowana właściwość, która jest tylko numeryczną częścią numeru wersji, lub innym sposobem podziału części -SNAPSHOT?

EDYCJA: Próbowałem już ustawić wersję pom.xml jako $ {my.version} -SNAPSHOT, a następnie zdefiniować my.version we właściwościach - działa to na zawsze z wyjątkiem wtyczki Maven Release Plugin, która narzeka że nie może przeanalizować wersji (co zrozumiałe, nie może automatycznie odgadnąć kolejnej wersji rozwojowej).

+1

Najprostszym rozwiązaniem, aby pozbyć się „-SNAPSHOT” jest uwolnienie artefakt. Najlepiej umieścić numer rewizji w pliku manifestu, a nie jako część nazwy pliku. Użycie właściwości do zdefiniowania numeru wersji nie będzie działać i nie ma sensu. Można użyć właściwości, która jest filtrowana podczas kompilacji i która może również zawierać numer wersji. – khmarbaise

+1

możliwy duplikat [Właściwości utracone podczas wydania Maven: wykonaj] (http://stackoverflow.com/questions/12397581/properties-lost-during-maven-releaseperform) – maba

Odpowiedz

35

uświadamiam sobie to pytanie jest odrobinę przestarzały, ale ja po prostu wpadł w podobnej sytuacji, a to w jaki sposób rozwiązać go:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
     <id>parse-version</id> 
     <goals> 
      <goal>parse-version</goal> 
     </goals> 
     </execution> 
    </executions> 
</plugin> 

co to build-Helper pluginu „analizować wersja” mojo będzie do daje następujące właściwości, które możesz wykorzystać według własnego uznania:

parsedVersion.majorVersion 
parsedVersion.minorVersion 
parsedVersion.incrementalVersion 
parsedVersion.qualifier 
parsedVersion.buildNumber 

Powinno to obejmować wszystkie żądane "części" wersji. Obecnie używam tego do budowania rozszerzeń chrome, w których wersja manifestu nie może zawierać "-SNAPSHOT" i musi mieć co najwyżej 4 liczby oddzielone kropkami. W moim przypadku użycia, używam tej kombinacji w celu uzyskania pożądanego rezultatu:

"version":"${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}" 

Tak, jestem w zasadzie stripping „-SNAPSHOT” więc moje lokalne kopie dev mojego rozszerzenie zainstaluje poprawnie do testów. Możesz budować, co chcesz z kawałkami. =)

+0

Aby zwiększyć tę wersję, można użyć następującego ciągu: 'newVersion = \ $ {parseVersion.majorVersion} $ {parsedVersion.minorVersion}. $ {parsedVersion.nextIncrementalVersion} ' – Lonzak

+0

patrz http://www.mojohaus.org/build-helper-maven-plugin/usage.html – Naxos84

1

Dla innych, którzy chcą zrobić więcej niż to czy chcieliby, aby usunąć migawkę z numerem kompilacji, ten plugin jest bardzo pomocny http://www.mojohaus.org/build-helper-maven-plugin/usage.html

Szczególnie znaleźć to użyteczne

Ustaw właściwość stosując zastępstwo regex do wartości

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.9.1</version> 
     <executions> 
      <execution> 
      <id>regex-property</id> 
      <goals> 
       <goal>regex-property</goal> 
      </goals> 
      <configuration> 
       <name>human.version</name> 
       <value>$\{project.version}</value> 
       <regex>-SNAPSHOT</regex> 
       <replacement> pre-release development version</replacement> 
       <failIfNoMatch>false</failIfNoMatch> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project>