我正在运行maven构建并在Artifactory中存储文件。我面临的一个问题是,当我尝试-snapshot版本时,它会覆盖Artifactory中的二进制文件。我尝试使用Maven内部版本号插件,但运行问题。我参考了这个 http://blog.codehangover.com/track-every-build-number-with-maven/
下面介绍我做了什么?
使用以下行更新了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>
现在我更新了ear和webproject的pom,如下所示
<build>
<finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
</build>
当我运行mvn clean install时,耳朵和战争已经生成但是当我检查耳内的战争时,我发现它像war-1.0-SNAPSHOT-null.war一样。我相信战争和耳朵无法获得buildNumber参数。我能够成功生成buildNUmber.property文件,并能够通过运行buildnumber:create plugin来增加数量。这是我的问题
答案 0 :(得分:1)
要获取唯一快照,请使用uniqueVersion标志(请参阅James Lorenzen's Blog)。如果使用maven目标deploy:deploy-file,则uniqueVersion标志默认为true。在我公司,我们有以下政策。只有“官方”快照才会进入存储库。 “官方”快照是基于我们的参考系统(我们的Jenkins ci服务器)构建的快照。我们不需要快照的独特功能,因为我们让Jenkins存档工件。这样我们总是可以回到某个版本,如果我们也愿意使用Jenkins。如果构建中断,则不会将快照部署到存储库。
到你的第二个问题;我的理解是你需要更新每个pom文件。但由于这是一次性的改变,所以不应该是太多的负担。
我并不完全理解您的第三个问题(“......使用Hudson Build编号单独开发人员构建......”)。如果你想为Hudson完成的每个构建添加构建号,你有几个选择。
您可以在部署时添加字符串作为分类器。 Maven将在文件名中添加该分类器(artifactID-version-classifier.jar - 例如my.company.calendar-0.0.1-Snapshot-Hudson.jar)。将通过将分类器添加到依赖项来检索工件。
在maven调用中添加另一个参数 - outputfilename($ {project.build.finalName},参见maven docu)
将您的版本字符串更改为