当前位置: 首页 > 知识库问答 >
问题:

如何使用Maven持续构建和部署功能分支?

丌官招
2023-03-14

我的团队正在使用功能分支来实现新功能,并不断将快照构建部署到远程存储库中供我们的用户使用。因此,“部署”实际上只意味着“分发到远程Maven存储库”。我们目前只为master分支运行持续集成构建,而不是功能分支,原因如下:我们使用Maven构建我们的项目并将JavaDoc和源代码与JAR一起分发。

我现在的计划是为每个功能分支构建添加一个分类器,并期望在创建和部署如下工件时使用该分类器:

>

  • 分支机构:master
  • 分类器:无
  • 工件:<代码>foo-${version}。jar,foo-${version}源代码。jar,foo-${version}-javadoc。jar

    分支:功能-X

    我并不真正关心工件的确切命名,我只需要为特征分支单独的main、source和JavaDoc工件。事实证明,JavaDoc插件和源插件都没有考虑配置的分类器,从而有效地覆盖了为我的主构建创建的工件。

    我真的不想更改artifactId,尽管这可能会解决问题。您如何处理功能分支和与Maven的持续集成?


  • 共有3个答案

    吴浩皛
    2023-03-14

    按照其他人的建议,使用版本号存储分支名称是一种快速的成功方法,但如果使用版本范围,则会导致问题。版本号不是用来这样使用的。我们在持续集成过程中使用它们,使集成测试依赖于被测试的工件:

    [1.8-SNAPSHOT,1.9-SNAPSHOT)
    

    版本号内的限定符部分表示相同代码库的不同增量阶段:

    1.8-alpha1-SNAPSHOT
    1.8-alpha1-SNAPSHOT
    1.8-beta1-SNAPSHOT
    

    这就是为什么上面的版本范围将捕获上述内容,Maven将按以下顺序进行排序:

    1.8-SNAPSHOT
    1.8-alpha1-SNAPSHOT
    1.8-alpha1-SNAPSHOT
    1.8-beta1-SNAPSHOT
    

    在版本号(1.8-featureA-SNAPSHOT)中包含功能分支名称的任何工件的订购将比不带限定符的快照更新。但功能分支是一个“不同”的代码库,而不是同一代码库的更新表示。对于我们的集成测试场景,这导致了无用的测试失败。功能分支尚未准备好进行集成测试。

    我们现在遵循以下规则:如果您必须更改某些内容,为什么不更改工件id?我们更改了特征分支的工件id,它工作得很好。

    孔安福
    2023-03-14

    我建议使用一个适当的版本来表示分支以及版本,例如:

    1.0.0-主机快照

    1.0.0-F1-要素F1的快照

    这也给出了一个指标,从1.0.0版开始,功能分支已经形成。

    易俊友
    2023-03-14

    我建议将分支限定符添加到版本组件中,因为它与该部分更相关。这也允许您的快照依赖于主分支旁边的那些版本。

     类似资料:
    • 我想继续向ServiceMix 6.0部署一个功能,它基于Karaf 3.0.4。 我第一次尝试使用karaf控制台。但也存在一些问题。对于标准的karaf安装,无法在karaf控制台上确定是否已经安装了功能(请参阅我的其他问题)。karaf控制台的另一个问题是它不支持退出代码。因此,无法可靠地确定功能安装是否成功完成。 然后我安装了hawtio,并试图通过与hawtio捆绑的jolokia/RE

    • 没有任何好的插件来使用Maven构建本机代码。native-maven-plugin是一个非常严格的构建系统,除其他外,这使得调试结果的二进制文件变得困难。您必须手动将本机Maven-Plugin构建系统与用于调试的本机IDE同步。 Maven没有替换部署的pom.xml文件中的变量:MNG-2971、MNG-4223。这意味着库必须在每个Maven配置文件中声明一次特定于平台的依赖关系(而不是声

    • 问题内容: 这是以下 问题 的后续措施: 后续问题:使用Maven仅将jar签名并部署到Maven Central。构建和编译完全由Ant完成 多亏了对先前问题的回答,以及声纳支持人员的一些建议,我才有了我的第一个“永无止境”。这是当前的输出: 根据此日志,以下文件已上传到 https://oss.sonatype.org/content/repositories/snapshots/com/gi

    • 现在我们来试一试从代码托管平台上拉取代码,并进行镜像构建和持续集成。 创建新项目并构建镜像 在控制台点击「代码构建」,然后在「代码构建」的界面中点击「创建新项目」。 第一步:填写项目名称 在「项目名称」上填写该项目的 Docker 镜像名称。 第二步:选择代码库 从第三方代码托管平台中选择我们想要构建的代码库,如果找不到需要的代码库可以点击右上角刷新按钮同步列表。 第三步:开启持续集成 持续集成是

    • 以下是后续问题:使用Maven只对JAR进行签名并将其部署到Maven Central。构建和编译完全由Ant完成 感谢前面问题的答案,以及sonatype支持人员的一些建议,我刚刚经历了第一次“非失败”。以下是的当前输出: 根据该日志,以下文件已上载到 https://oss.sonatype.org/content/repositories/snapshots/com/github/alite

    • 它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。 这一切让我很困惑。任何更详细的解释(或附带一个例子)都是赞赏的!