Deployment maven:将依赖项部署到备用存储库
我试图用我们的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的配置模板,并将结果打包到
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的步骤,这对于我们的高容量来说并不实用