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

Maven 2 在Maven中附加二进制文件的内部版本号,maven-2,hudson,Maven 2,Hudson,我正在运行maven build并在Artifactory中存储文件。我面临的一个问题是,当我尝试快照版本时,它会覆盖Artifactory中的二进制文件。我尝试使用Maven build number插件,但遇到了一些问题 下面描述我做了什么 使用以下行更新masterpom.xml <plugin> <groupId>org.codehaus.mojo</groupId> <ar

我正在运行maven build并在Artifactory中存储文件。我面临的一个问题是,当我尝试快照版本时,它会覆盖Artifactory中的二进制文件。我尝试使用Maven build number插件,但遇到了一些问题

下面描述我做了什么

  • 使用以下行更新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>
    
    
    org.codehaus.mojo
    buildnumber maven插件
    1.0-beta-3
    验证
    创造
    假的
    假的
    ${version}.{0,number}
    建筑编号
    
  • 现在我更新ear和webproject的pom,如下所示

                     <build>
                       <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
                     </build>
    
    
    ${project.artifactId}-${project.version}.${buildNumber}
    
  • 当我运行mvn clean install时,生成了ear和war,但当我检查ear中的war时,我发现它类似于war-1.0-SNAPSHOT-null.war。我相信war和ear无法获取buildNumber参数。我能够成功地生成buildNUmber.property文件,并且能够通过运行buildNUmber:create插件来增加这个数字。以下是我的问题

  • 我在这里做错了什么,以及为什么没有选择buildNumber参数
  • 此外,我还希望生成所有二进制文件,包括以下格式的JAR二进制版本快照。${buildNumber}。所以我需要更新每个文件的pom吗?或者用其他方法来更新它吗
  • 此外,我们正在使用哈德逊版本进行持续集成,我们希望使用哈德逊版本号分离开发人员的版本。如果我们不想在Hudson构建之后签入buildNumber.properties,我们如何实现这一点

  • 要获取唯一快照,请使用uniqueVersion标志(请参阅)。如果使用maven目标deploy:deploy文件,默认情况下uniqueVersion标志为true。在我的公司,我们有以下政策。只有“官方”快照才能进入存储库。“官方”快照是建立在我们的参考系统(我们的Jenkins ci服务器)上的快照。我们不需要快照的独特功能,因为我们让Jenkins归档工件。这样,如果我们也愿意的话,我们可以使用詹金斯回到某个版本。如果生成中断,快照将不会部署到repo

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

    我不完全理解你的第三个问题(“…使用哈德逊版本号的独立开发人员版本…”)。如果您想为Hudson完成的每个构建添加构建编号,您有几个选项

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

  • 向maven调用中添加另一个参数-outputfilename(${project.build.finalName},请参阅)

  • 将版本字符串更改为


  • 要获取唯一快照,请使用uniqueVersion标志(请参阅)。如果使用maven目标deploy:deploy文件,默认情况下uniqueVersion标志为true。在我的公司,我们有以下政策。只有“官方”快照才能进入存储库。“官方”快照是建立在我们的参考系统(我们的Jenkins ci服务器)上的快照。我们不需要快照的独特功能,因为我们让Jenkins归档工件。这样,如果我们也愿意的话,我们可以使用詹金斯回到某个版本。如果生成中断,快照将不会部署到repo

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

    我不完全理解你的第三个问题(“…使用哈德逊版本号的独立开发人员版本…”)。如果您想为Hudson完成的每个构建添加构建编号,您有几个选项

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

  • 向maven调用中添加另一个参数-outputfilename(${project.build.finalName},请参阅)

  • 将版本字符串更改为