2014-02-19 3 views
5

Das buildnumber-maven-plugin kann die Revisionsnummer von git bekommen und entsprechend the meager documentation provided sollte es die Verzweigung auch in der ${scmBranch} Eigenschaft bereitstellen. Alles, was ich bekomme, ist UNKNOWN für die ${scmBranch} Eigenschaft.Das buildnumber-maven-plugin gibt UNKNOWN für die scmBranch zurück

Gibt es noch etwas, was ich tun muss, um die Filialinformationen von buildnumber-maven-plugin zu bekommen?

Hier sind die entsprechenden Einträge aus der Liste meiner pom.xml:

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

<manifestEntries> 
    <Build-Branch>${scmBranch}</Build-Branch> 
    <Build-Revision>${buildNumber}</Build-Revision> 
    <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp> 
</manifestEntries> 
+0

Wenn Sie die Meinung einer spärlichen Dokumentation haben, warum nicht [ein Problem zu schaffen] (http://jira.codehaus.org/browse/MBUILDNUM) oder machen Sie am besten Vorschläge, wie Sie die Dokumente verbessern oder einen Patch für die Dokumente erstellen können. – khmarbaise

+0

Ich war diplomatisch, als ich die Dokumentation "mager" nannte. Angesichts der folgenden Antwort sollte ich es als irreführend bezeichnen. Die Autoren dieses Plugins müssen wissen, dass es nur mit SVN funktioniert, also würde das Erstellen eines Problems ihnen nur sagen, was sie bereits wissen, aber nicht dokumentieren: buildnumber-maven-plugin arbeitet mit svn, nicht mit git. –

+0

Warum also nicht einen besseren Vorschlag machen, wie man es dokumentiert? – khmarbaise

Antwort

11

Kurze Antwort der Buildnumber-Plugin 1.2 doesn't print git branches, so überprüfen Sie die jgit-buildnumber oder maven-git-commit-id Plugins.


Egal, wie viel Sie konfigurieren es, Sie gehen nicht einen Zweig aus dem Buildnumber zu bekommen 1.2-Plugin, weil es nur ist für SVN branch information suchen.

Stattdessen gibt es eine große Anzahl von Community beigetragen git plugins for maven. Hier

ist ein Beispiel pom, die eine Instanz von allen drei Plugins verwendet, dass Sie schnell über mvn -f test.xml validate ausprobieren können:

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>my.test</groupId> 
    <artifactId>git-branch-info</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <scm> 
     <connection>scm:git:ssh://path_not_used_in_buildnumber_example/but_scm_type_is</connection> 
    </scm> 

    <build> 
     <plugins> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>buildnumber-maven-plugin</artifactId> 
       <version>1.2</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>create</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>ru.concerteza.buildnumber</groupId> 
       <artifactId>maven-jgit-buildnumber-plugin</artifactId> 
       <version>1.2.7</version> 
       <executions> 
        <execution> 
         <id>jgit-buildnumber</id> 
         <goals> 
          <goal>extract-buildnumber</goal> 
         </goals> 
         <phase>validate</phase> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>pl.project13.maven</groupId> 
       <artifactId>git-commit-id-plugin</artifactId> 
       <version>2.1.9</version> 
       <executions> 
        <execution> 
         <id>git-commit-id</id> 
         <goals> 
          <goal>revision</goal> 
         </goals> 
         <phase>validate</phase> 
         <configuration> 
          <!-- Only changing prefix since properties conflicts with jgit above --> 
          <prefix>git-commit-id</prefix> 
          <!-- We're using a pom in this example--> 
          <skipPoms>false</skipPoms> 
          <gitDescribe> 
           <!-- Faster to get just branch if skip = true --> 
           <skip>false</skip> 
          </gitDescribe> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version>1.7</version> 
       <executions> 
        <execution> 
         <id>echo-properties</id> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <phase>validate</phase> 
         <configuration> 
          <target> 
           <echo message="buildnumber-maven-plugin properties:"/> 
           <echo message=" $${scmBranch}:     ${scmBranch}" /> 
           <echo message=" $${buildNumber}:    ${buildNumber}" /> 
           <echo message=" $${timestamp}:     ${timestamp}" /> 

           <echo message="maven-jgit-buildnumber-plugin properties:"/> 
           <echo message=" $${git.revision}:    ${git.revision}" /> 
           <echo message=" $${git.branch}:     ${git.branch}" /> 
           <echo message=" $${git.tag}:     ${git.tag}" /> 
           <echo message=" $${git.commitsCount}:   ${git.commitsCount}" /> 
           <echo message=" $${git.buildnumber}:   ${git.buildnumber}" /> 


           <echo message="git-commit-id-plugin properties (aliased with git-commit-id):"/> 
           <echo message=" $${git.branch}:     ${git-commit-id.branch}" /> 

           <echo message=" $${git.commit.id.describe}:  ${git-commit-id.commit.id.describe}" /> 

           <echo message=" $${git.build.user.name}:  ${git-commit-id.build.user.name}" /> 
           <echo message=" $${git.build.user.email}:  ${git-commit-id.build.user.email}" /> 
           <echo message=" $${git.build.time}:    ${git-commit-id.build.time}" /> 

           <echo message=" $${git.commit.id}:    ${git-commit-id.commit.id}" /> 
           <echo message=" $${git.commit.id.abbrev}:  ${git-commit-id.commit.id.abbrev}" /> 
           <echo message=" $${git.commit.user.name}:  ${git-commit-id.commit.user.name}" /> 
           <echo message=" $${git.commit.user.email}:  ${git-commit-id.commit.user.email}" /> 
           <echo message=" $${git.commit.message.full}: ${git-commit-id.commit.message.full}" /> 
           <echo message=" $${git.commit.message.short}: ${git-commit-id.commit.message.short}" /> 
           <echo message=" $${git.commit.time}:   ${git-commit-id.commit.time}" /> 
          </target> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 

</project> 
+1

Ihr erster Link oben - LOL! Wie sie Code so schreiben könnten und dann behaupten, dass das Plugin mit git funktionieren würde, ist unglaublich. jgit-buildnumber macht was ich brauche. Vielen Dank. –

+3

jgit-buildnumber prüft nicht auf nicht festgeschriebene Änderungen. Um diesen Check zu bekommen, musste ich buildnumber-maven-plugin zurück zur pom.xml hinzufügen, immer noch mit jgit-buildnumber für die Manifest-Einträge. Das Beste aus beiden Plugins. –

+7

Das Plugin v1.3 druckt Git-Zweignamen. – cslotty

Verwandte Themen