在Maven中附加二进制文件的内部版本号

时间:2011-10-22 00:46:03

标签: maven-2 hudson

我正在运行maven构建并在Artifactory中存储文件。我面临的一个问题是,当我尝试-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>
    
  3. 当我运行mvn clean install时,耳朵和战争已经生成但是当我检查耳内的战争时,我发现它像war-1.0-SNAPSHOT-null.war一样。我相信战争和耳朵无法获得buildNumber参数。我能够成功生成buildNUmber.property文件,并能够通过运行buildnumber:create plugin来增加数量。这是我的问题

    1. 我在这里做错了,为什么没有选择buildNumber参数。
    2. 此外,我想生成所有二进制文件,包括以下格式的二进制版本快照。$ {buildNumber}。那么我是否需要更新每个文件的pom或任何其他方式来更新它?
    3. 我们也使用Hudson构建进行连续集成,我们希望将开发人员构建与Hudson Build编号分开。如果我们不想在Hudson构建之后签入buildNumber.properties,我们怎样才能实现这一点。

1 个答案:

答案 0 :(得分:1)

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

到你的第二个问题;我的理解是你需要更新每个pom文件。但由于这是一次性的改变,所以不应该是太多的负担。

我并不完全理解您的第三个问题(“......使用Hudson Build编号单独开发人员构建......”)。如果你想为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. 将您的版本字符串更改为