【问题标题】:Attaching Build Number for binaries in Maven在 Maven 中附加二进制文件的内部版本号
【发布时间】:2011-12-12 23:44:46
【问题描述】:

我在 Artifactory 中运行 maven 构建和存储文件。我面临的一个问题是,当我尝试使用 -snapshot 版本时,它会覆盖 Artifactory 中的二进制文件。我尝试使用 Maven 内部版本号插件,但遇到了问题。我参考了这个 http://blog.codehangover.com/track-every-build-number-with-maven/

在下面描述我做了什么?

  1. 使用以下行更新了 masterpom.xml。

             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>buildnumber-maven-plugin</artifactId>
                 <version>1.0-beta-3</version>
                 <executions>
                       <execution>
                       <phase>validate</phase>
                       <goals>
                           <goal>create</goal>
                        </goals>
                       </execution>
                 </executions>
                       <configuration>
                            <doCheck>false</doCheck>
                            <doUpdate>false</doUpdate>
                            <format>${version}.{0,number}</format>
                            <items>
                               <item>buildNumber</item>
                            </items>
                       </configuration>
            </plugin>
    
  2. 现在我更新ear和webproject的pom如下

                     <build>
                       <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
                     </build>
    

当我运行 mvn clean install 时,生成了 ear 和 war,但是当我检查 ear 内部的 war 时,我发现它类似于 war-1.0-SNAPSHOT-null.war。我相信战争和耳朵无法获得buildNumber参数。我能够成功生成 buildNUMer.property 文件,并且能够通过运行 buildnumber:create 插件来增加数字。这是我的问题

  1. 我在这里做错了什么以及为什么没有选择 buildNumber 参数。
  2. 我还想生成所有二进制文件,包括以下格式的 jars binary-version-Snapshot.${buildNumber}。那么我是否需要更新每个文件的 pom 或任何其他方式来更新它?
  3. 此外,我们正在使用 Hudson 构建进行持续集成,并且我们希望将开发人员构建与 Hudson 构建号分开。如果我们不想在 Hudson 构建之后检查 buildNumber.properties,我们如何实现这一点。

【问题讨论】:

    标签: maven-2 hudson


    【解决方案1】:

    要获取唯一快照,请使用 uniqueVersion 标志(请参阅James Lorenzen's Blog)。如果您使用 maven 目标 deploy:deploy-file,则 uniqueVersion 标志默认为 true。在我的公司,我们有以下政策。只有“官方”快照进入存储库。 “官方”快照是在我们的参考系统(我们的 Jenkins ci 服务器)上构建的。我们不需要快照的独特功能,因为我们让 Jenkins 归档工件。这样,如果我们也想使用 Jenkins,我们总是可以回到某个版本。如果构建中断,快照将不会部署到 repo。

    关于你的第二个问题;我的理解是您需要更新每个 pom 文件。不过既然是一次性更改,应该不会有太大的负担。

    我不完全理解您的第三个问题(“......使用 Hudson 内部版本号构建的单独开发人员......”)。如果您想为 Hudson 完成的每个构建添加构建号,您有多种选择。

    1. 您可以在部署时添加一个字符串作为分类器。 Maven 将在文件名中添加该分类器(artifactID-version-classifier.jar - 例如 my.company.calendar-0.0.1-Snapshot-Hudson.jar)。将通过将分类器添加到依赖项来检索工件。

    2. 为您的 maven 调用添加另一个参数 - outputfilename (${project.build.finalName},参见maven docu)

    3. 将您的版本字符串更改为类似

    【讨论】:

      猜你喜欢
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2018-07-16
      • 2020-10-07
      • 1970-01-01
      • 2017-05-05
      相关资源
      最近更新 更多