2016-11-05 2 views
2

Ich entwickle derzeit eine Microservice-basierte Architektur für meine Anwendung. Ich habe ein Maven-Multi-Modul-Projekt, das viele Dienste hat, so dass ich sie einfach auf den Docker-Hub mit dem Maven Deploy-Befehl und auch eine maven docker plugin bereitstellen kann.Retrieve svn zuletzt geänderte Revisionsnummer mit dem Build-Number-Maven-Plugin

Noch sind die Docker Image-Tags in der Projektversionsnummer basiert, während ich möchte sie mit jedem Repository zuletzt geänderten Versionsnummer markiert haben. Von Vorerst bin ich nur versucht, dieses Feld als einen offensichtlichen Eintrag hinzufügen mit dem buildnumber-maven-plugin:

Lasst uns sagen, das ist mein Multi-Modul-Projekt:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
... 

    <modules> 
     <module>module-a</module> 
     <module>module-b</module> 
    </modules> 

... 

</project> 

Und das Modell für Modul-a würde sein:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    ... 


    <scm> 
     <connection>scm:svn:http://myrepo.com/svn/application/module-a</connection> 
    </scm> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>buildnumber-maven-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>create</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <doCheck>false</doCheck> 
        <doUpdate>true</doUpdate> 
        <useLastCommittedRevision>true</useLastCommittedRevision> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifestEntries> 
          <SCM-Revision>${buildNumber}</SCM-Revision> 
         </manifestEntries> 
        </archive> 
       </configuration> 
      </plugin> 
      .... 
     </plugins> 
    </build> 

    <dependencies> 
     ... 
    </dependencies> 

</project> 

das Problem ist, dass {} buildnumber meine Arbeitskopie Zahl ausgewertet, die die bis zum letzten commit aus dem Repository bezieht und nicht auf die scm:svn:http://myrepo.com/svn/application/module-a Lage. Um zu erklären, ist es besser, wenn ich die Eigenschaften des Moduls-a von Schildkröte anzuzeigen habe Ich habe diese:

enter image description here

Was ich will ist 3248 abgerufen werden, die auf die letzte wirkliche Änderung bezieht sich vorgenommen auf Modul-a , statt 3257 (Arbeitskopie), was ich vom Plugin bekomme. Auf diese Weise würde das Andock-Plugin wissen, ob es ein anderes Bild-Tag ist und es nur schieben, wenn Änderungen am Modul im Repo vorgenommen wurden.

+1

Von dem, was ich verstehe, ich wahrscheinlich die gleiche [Frage] haben (https://github.com/mojohaus/buildnumber-maven-plugin/issues/66). – Moreaki

Antwort

1

ich glaube, das einzige, was Sie hier

<doCheck>false</doCheck> 

ist vermisste ich denke, es true sein sollte.

+0

Danke, dass Sie darauf hingewiesen haben. Leider habe ich die Umgebung gerade nicht eingerichtet, werde es so schnell wie möglich versuchen. –

1
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>buildnumber-maven-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>create</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doCheck>false</doCheck> 
     <doUpdate>true</doUpdate> 
     <useLastCommittedRevision>true</useLastCommittedRevision> 
    </configuration> 
</plugin> 

Das funktionierte für mich.

+0

Danke für die Freigabe! –

Verwandte Themen