【问题标题】:The buildnumber-maven-plugin is returning UNKNOWN for the scmBranchbuildnumber-maven-plugin 为 scmBranch 返回 UNKNOWN
【发布时间】:2014-03-20 14:20:41
【问题描述】:

buildnumber-maven-plugin 能够从 git 获取修订号,根据the meager documentation provided 它应该在${scmBranch} 属性中提供分支。但是,我得到的只是 UNKNOWN${scmBranch} 属性。

我还需要做些什么来从 buildnumber-maven-plugin 获取分支信息吗?

以下是我的 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>

【问题讨论】:

  • 如果您对少量文档有意见,为什么不creating a issue 或最好提出如何改进文档或为文档创建补丁的建议。
  • 当我称文档为“微薄”时,我是在外交。鉴于下面的答案,我应该称之为误导。这个插件的作者必须知道它只适用于 SVN,因此创建问题只会告诉他们他们已经知道但没有记录的内容:buildnumber-maven-plugin 适用于 svn,而不适用于 git。
  • 那么为什么不提出一个更好的建议来记录它呢?
  • 今天可用的版本(1.4 版),buildnumber-maven-plugin 正在为 scmBranch 设置一个值。

标签: git maven


【解决方案1】:

简短回答 buildnumber 插件 1.2 doesn't print git branches,因此请查看 jgit-buildnumbermaven-git-commit-id 插件。


无论你如何配置它,你都不会从 buildnumber 插件 1.2 中得到一个分支,因为它只是在寻找 SVN branch information

反而有大量的社区贡献了git plugins for maven

这是一个使用所有三个插件实例的 pom 示例,您可以通过 mvn -f test.xml validate 快速试用:

<?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>

【讨论】:

  • 你上面的第一个链接 - 哈哈!他们如何编写这样的代码,然后声称该插件可以与 git 一起使用,这令人难以置信。 jgit-buildnumber 可以满足我的需要。谢谢。
  • jgit-buildnumber 不检查未提交的更改。为了获得该检查,我必须将 buildnumber-maven-plugin 添加回 pom.xml,仍然使用 jgit-buildnumber 作为清单条目。最好的两个插件。
  • 插件 v1.3 将打印 git 分支名称。
  • 关于 v1.3 工作的评论应该被提升为答案,因为这个问题是关于这个插件的。
  • @Dean 我在 JGit-BuildNumber 插件的分支中添加了脏检查以及许多其他改进:JGit Build Number for Maven, Ant, and Gradle
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多