【发布时间】:2012-11-08 13:36:35
【问题描述】:
问题是,在我们公司,我们有一个包含多个子模块的项目,但是其中一个子模块只是 API 声明的集合,是供其他(第三部分)项目使用的。我想将其保留为子模块,因为它更易于维护和构建(依赖和属性继承)。该项目中的其他子模块也依赖于它。
我的问题是,是否存在执行部署阶段的良好做法或好方法,该阶段将仅将此子模块上传到不同的存储库(也可以复制),而不依赖于父 pom .
我已经尝试过的: 我已经检查了 deploy:deploy-file,但问题在于 SNAPSHOT 构建。我们希望能够发布 SNAPSHOTS 和发布版本,并且快照具有与发布版本不同的存储库,但部署文件目标只能有一个 url 参数。我不想为快照部署使用不同的配置文件。如果版本是 SNAPSHOT,我尝试使用 maven build-helper 及其 regex-property 来更改存储库 url,但由于插件和 regex 限制而无法这样做。
最后一个选项是我可以为此制作一个插件,但我想知道是否有更优雅的方式来解决这个问题,即“maven way”。
【问题讨论】:
-
只是为了确保:您想运行
mvn deploy,但实际上只是将您的“客户端”jar 部署到存储库? -
是的,我们有 2 个独立的存储库,一个是内部的,一个是“公共的”,只有客户端模块应该进入公共的。
-
如果特定子模块需要完全独立的发布策略(版本增量、scm 标记、不同的分发存储库等),最好的“maven 方式”IMO 是将其分离并使其成为一个独立的模块。
-
之所以不想完全分离它是因为version、tagging、scm、build配置和parent一样,只是生成的jar要单独部署到另一个nexus仓库,供第三者使用。这个 jar 是第 3 方“插件”在编译时需要的唯一依赖项。
标签: java jakarta-ee maven