Dav*_*vid 10 deployment maven-2 nexus
我正在使用maven 2.2和nexus 1.4.0
假设我有一个像这样的pom结构(带有相应的版本)
parentproj, v1.0.1
- childproj1, v1.0.2
- childproj2, v1.0.7
Run Code Online (Sandbox Code Playgroud)
childproj1和childproj2代表应用程序的不同部分(例如gui和backend),我希望能够将它们的版本分开,这样我就可以发布新版本的后端而无需发布新版本的gui.
现在,要将此结构部署到Nexus,可以方便地转到parentproj并说
mvn deploy -DperformRelease = true
这会将所有工件部署到Nexus realease存储库.我第一次部署它时工作正常,但第二次遇到问题:让我说我对childproj1进行了更新,以便我们现在有以下版本:
parentproj, v1.0.1
- childproj1, v1.0.3
- childproj2, v1.0.7
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Nexus不会让我从parentproj进行mvn部署,因为它已经在1.0.7版本中有了一个childproj2的副本.Nexus会说"资源,非法请求:ID ='版本'的存储库不允许更新工件." 这很好,我不想错误地更新现有版本.
但我想我想要做的就是能够告诉maven类似于"仅部署那些版本尚未存在于版本库中的工件".
有没有办法做到这一点,还是我必须自己部署每个项目?
根据我的经验,部署所有内容都更容易,并且通常对所有组件使用相同的版本号。例如,如果我的团队正在开发版本 1.0.7,则所有子模块的版本号均为 1.0.7-SNAPSHOT,直到我们发布为止,即使某些模块中的代码没有更改。然后当我们部署时,我们将部署整个应用程序。我认为与零散部署相比,它有几个优点。首先,如果您必须回滚到最后一个稳定版本,则只需将所有模块回滚到 1.0.6 — 您不必记住后端是 1.0.3,而 GUI 是 1.0.6。其次,它确保所有组件都相互正确编译并作为逻辑组进行测试。
抱歉,我知道这不是您问题的具体答案,但是,至少就我团队的情况而言,稍微不同地思考是有用的
归档时间: |
|
查看次数: |
4408 次 |
最近记录: |