2011-10-22 54 views
1

我正在Maifa构建和存储文件在Artifactory中运行。我面临的一个问题是,当我尝试使用-snapshot版本覆盖Artifactory中的二进制文件时。我尝试使用Maven内部编号插件,但运行到问题。我对此有所了解。 http://blog.codehangover.com/track-every-build-number-with-maven/在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. 现在我更新耳朵和webproject的POM如下

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

当我跑MVN干净安装,得到了产生的耳朵和战争,但是当我检查了战争耳内我发现它就像war-1.0-SNAPSHOT-null.war一样。我相信战争和耳朵无法获得buildNumber参数。我能够成功生成buildNUmber.property文件,并能够通过运行buildnumber:create插件来增加数量。这里是我的问题

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

回答

1

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

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

我不完全理解你的第三个问题(“......独立开发人员用哈德森版本号建立...”)。如果你想为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. 改变你的版本字符串以类似

相关问题