Deployment maven:将依赖项部署到备用存储库

Deployment maven:将依赖项部署到备用存储库,deployment,maven-2,repository,Deployment,Maven 2,Repository,我试图用我们的maven版本做一些版本升级设置。我自己做这件事是因为我发现存储库管理人员不太符合要求 我希望流程如下所示: 1.开发人员将ear和jar文件部署到“开发人员”存储库中 2.构建团队运行构建以获取这些文件,添加特定于QA的配置模板,将结果打包到zip文件中 3.使用选项,构建团队将zip文件部署到QA存储库 4.将依赖的ear和jar文件部署到QA存储库 5.QA周期完成后,构建团队运行一个构建来下载(现在已测试)jar和ear文件,添加特定于prepod的配置模板,并将结果打包到

我试图用我们的maven版本做一些版本升级设置。我自己做这件事是因为我发现存储库管理人员不太符合要求

我希望流程如下所示:
1.开发人员将ear和jar文件部署到“开发人员”存储库中
2.构建团队运行构建以获取这些文件,添加特定于QA的配置模板,将结果打包到zip文件中
3.使用
选项,构建团队将zip文件部署到QA存储库
4.将依赖的ear和jar文件部署到QA存储库 5.QA周期完成后,构建团队运行一个构建来下载(现在已测试)jar和ear文件,添加特定于prepod的配置模板,并将结果打包到zip文件中
6.使用
选项,构建团队将zip文件部署到prepod存储库
... 并再次重复该过程进行生产推广

在第4步之前,一切正常。似乎没有办法告诉maven将依赖项部署到备用位置

因此,最终的结果是如何在存储库之间复制依赖的ear和jar文件,并以这样一种方式执行,即版本信息保持完整,并且我可以针对它们运行常规构建

通过maven配置文件切换源和目标存储库:

<profile>
  <id>qa</id>
  <distributionManagement>
    <repository>
      <id>prddeploy</id>
      <name>build server repository</name>
      <url>${repoHost}/dev_repo</url>
    </repository>
  </distributionManagement>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
         <altDeploymentRepository>qadeploy::default::${repoHost}/qa_repo</altDeploymentRepository>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

质量保证
策略
构建服务器存储库
${repoost}/dev_repo
org.apache.maven.plugins
maven部署插件
qadeploy::默认值:${repoost}/qa_repo
如果“dev”配置文件是默认配置文件,那么开发不需要特殊步骤,它们只需运行
mvn deploy
。构建团队运行:
mvn deploy-pqa
开始qa部署周期

我已经尝试使用nexus和artifactory作为存储库管理器。我使用哪一个似乎无关紧要,但如果其中一个能使这个过程更容易,那么这两个都是可用的


我知道nexus在其pro版本中提供了一个构建提升功能,但根据文档,关键的交易破坏者是阶段存储库必须在使用之前关闭。我们的软件有许多不同的组件,当修复QA中的错误时,我们需要能够只重新部署更改的组件,而不是整个系统。nexus暂存存储库设置似乎不允许这样做。如果我读错了,请有人给我指出正确的方向。

你应该重新考虑一下,为什么这似乎限制了你

“关闭”分期回购的想法是为了防止对一组工件的任何进一步更改被传递给QA进行认证

我建议采用以下解决方案之一:

  • 剪切一个较小的补丁版本,设计用于QA中当前版本的顶部
  • 如果您的组件是完全分离的,考虑将它们作为独立版本的组件释放。<李>
使现代化
Artifactory有一个使用标记来管理工件的暂存和升级的工具。细节我还不完全清楚,但是这个解决方案可能会给你带来你想要的灵活性。

你应该重新考虑一下为什么这个问题似乎限制了你

“关闭”分期回购的想法是为了防止对一组工件的任何进一步更改被传递给QA进行认证

我建议采用以下解决方案之一:

  • 剪切一个较小的补丁版本,设计用于QA中当前版本的顶部
  • 如果您的组件是完全分离的,考虑将它们作为独立版本的组件释放。<李>
使现代化
Artifactory有一个使用标记来管理工件的暂存和升级的工具。细节我并不完全清楚,但此解决方案可能会给您带来所需的灵活性。

关于nexus分期回购,我没有提到的另一件事是,该过程似乎需要大量手动操作。我需要这个过程完全自动化并编写脚本,就像我们每天对QA进行2-3次更新一样。因此,由于增加了大量的开销,要求构建工程师不断创建新的用于部署到中的开发的staging repo是行不通的。我阅读的所有文档都给出了使用nexus gui的步骤,这对于我们拥有的高容量来说是不实际的。nexus staging suite自动生成暂存存储库,只需部署即可。此外,还有一个Maven Nexus插件用于自动化操作:“关闭”、“升级”、“删除”和“发布”。这个过程可以完全自动化。参见doco:关于独立版本的组件——我们已经这样做了,但是有一组给定的组件计划用于给定的版本,因此,例如,Dec版本可能包括计费模块的v1.5和声音处理器模块的v2.3.1。除了Dec版本之外,这两个版本之间没有真正的依赖关系。在再次查看文档之后,一切看起来都正常,直到我们需要告诉nexus如何决定将哪些项目添加到暂存存储库。在这里,它会分崩离析,因为实际上唯一的方法是通过SCM系统中的分支名称,这在nexus中是不可见的。artifactory选项看起来可以做到这一点,但我必须进行大量测试,以确定关于nexus staging repo,我没有提到的另一件事是,该过程似乎需要大量手动操作。我需要这个过程完全自动化并编写脚本,就像我们每天对QA进行2-3次更新一样。因此,由于增加了大量的开销,要求构建工程师不断创建新的用于部署到中的开发的staging repo是行不通的。我读过的所有文档都给出了使用NexusGUI的步骤,这对于我们的高容量来说并不实用