1

我有以下配置来创建内部版本号并将其保存在 MANIFEST.MF 中。构建过程会生成一个 buildNumber.properties 并跟踪它的最后构建。但是,我认为这个文件应该作为存储 buildNumber 的一部分提交回 GIT。这种理解正确吗?还是有其他方法可以实现这一目标?

建立目标

mvn clean package

pom.xml

<scm>
<connection>scm:git:https://abc.xyz.com/#projects/scm/DOCKER-AbcServer.git</connection>
</scm>

<plugins>
  <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>
      <format>{0,number}</format>
      <items>
        <item>buildNumber0</item>
      </items>
      <doCheck>true</doCheck>
      <doUpdate>true</doUpdate>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
      <archive>
        <manifest>
          <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
        </manifest>
        <manifestEntries>
          <Build-Number>${project.version}-r${buildNumber}</Build-Number>
          <Build-SCMBranch>${scmBranch}</Build-SCMBranch>
          <Build-Time>${maven.build.timestamp}</Build-Time>
        </manifestEntries>
      </archive>
    </configuration>
  </plugin>
</plugins>

buildNumber.properties

#maven.buildNumber.plugin properties file
#Fri Aug 10 10:49:49 PDT 2018
buildNumber0=2
4

1 回答 1

1

如果您提交 buildNumber.properties 文件,您将获得一个在每个开发人员和持续集成 builde 之间递增的 build 编号,除非您在 checkout 中构建并且其他人进行构建。你们都将增加内部版本号。当你们中的一个人提交文件并推送时,你们中的哪一个赢了?该项目的当前内部版本号是多少?

我认为将增量内部版本号视为“特定克隆的内部版本号”而不是在整个项目中保持不变的版本号更为准确。

如果您使用 git 或 svn 或与 buildnumber 集成的任何其他 SCM,则可以使用 SCM 提交 id 作为内部版本号而不是整数。这本质上由 SCM 存储,并准确显示构建的提交。我更喜欢这个,因为通过查看清单文件或 JAR 名称,我可以立即跳转到正确的提交以对问题进行分类或确定用户是否使用过时的构建。

另一个很好的问题涵盖了 buildnumber 插件的一些细节并提供了额外的资源:Maven build number plugin, how to save the build number in a file?

于 2018-08-17T16:20:15.267 回答