maven-2 - maven 仅部署更改的工件

标签 maven-2 deployment nexus

我正在使用 maven 2.2 和 nexus 1.4.0

假设我有一个像这样的 pom 结构(有相应的版本)

parentproj, v1.0.1
 - childproj1, v1.0.2
 - childproj2, v1.0.7

childproj1 和 childproj2 代表应用程序的不同部分(例如 gui 和后端),我希望能够将它们的版本分开,以便我可以发布后端的新版本而不必发布新版本的 gui。

现在,要将这个结构部署到 Nexus,可以方便地转到 parentproj 并说

mvn deploy -DperformRelease=true



这会将所有工件部署到 Nexus realease 存储库。这在我第一次部署时运行良好,但第二次遇到问题:假设我对 childproj1 进行了更新,因此我们现在有以下版本:
parentproj, v1.0.1
 - childproj1, v1.0.3
 - childproj2, v1.0.7

在这种情况下,Nexus 不会让我从 parentproj 执行 mvn deploy,因为它在 1.0.7 版本中已经有了 childproj2 的副本。 Nexus 会说“资源,非法请求:ID='releases' 的存储库不允许更新工件。”这很好,我不想错误地更新现有版本。

但我想我想要做的是能够告诉 maven 诸如“仅部署那些具有发布存储库中尚不存在的版本的工件”之类的东西。

有没有办法做到这一点,还是我必须自己部署每个项目?

最佳答案

根据我的经验,部署所有内容更容易,并且通常对所有组件使用相同的版本号。例如,如果我的团队正在开发 1.0.7 版本,则所有子模块的版本号都是 1.0.7-SNAPSHOT,直到我们发布,即使某些模块中没有代码更改。然后,当我们部署时,我们将部署整个应用程序。我认为它比零碎的部署有几个优点。首先,如果你每个人都必须回滚到上一个稳定版本,你只需要为所有模块回滚到 1.0.6 ——你不必记住后端是 1.0.3 而 GUI 是 1.0.6。其次,它确保所有组件都相互正确编译,并作为一个逻辑组进行了测试。

抱歉,我知道这不是您问题的具体答案,但是,至少在我的团队的情况下,稍微不同的想法很有用

关于maven-2 - maven 仅部署更改的工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860300/

相关文章:

java - 使用 wget 和 Nexus Rest API 进行奇怪的文件命名

tomcat - 在 Gentoo (log4j) 上将 Sonatype Nexus 部署到 Tomcat6 时出现问题

java - 使用 Maven 检测循环依赖

node.js - 将 Angular 应用程序部署到 Heroku,构建成功但在浏览器中显示 404 not found

nexus - 如何重命名 Nexus Repository 3 中的存储库?

git - 使用 capistrano 和 git 将相同的代码库(略有差异)部署到多个服务器

visual-studio-2010 - Visual Studio 2010 - Web 部署项目包括框架 DLL

java - 如何让 GWT 2.0 和 ReSTLet 2.0 很好地发挥作用

java - Maven : remove a single transitive dependency

maven-2 - 如何在 Maven 项目中设置作者姓名?