2

问题是,在我们公司,我们有一个包含多个子模块的项目,但是其中一个子模块只是 API 声明的集合,并且是供其他(3rd praty)项目使用的。我想将其保留为子模块,因为它更易于维护和构建(依赖和属性继承)。该项目中的其他子模块也依赖于它。

我的问题是,是否存在执行部署阶段的良好做法或好方法,该阶段将仅将此子模块上传到不同的存储库(也可以复制),而不依赖于父 pom。

我已经尝试过:我已经检查了 deploy:deploy-file,但问题在于 SNAPSHOT 构建。我们希望能够发布 SNAPSHOTS 和发布版本,并且快照具有与发布版本不同的存储库,但部署文件目标只能有一个 url 参数。我不想为快照部署使用不同的配置文件。如果版本是 SNAPSHOT,我尝试使用 maven build-helper 及其 regex-property 来更改存储库 url,但由于插件和 regex 限制而无法这样做。

最后一个选项是我可以为此制作一个插件,但我想知道是否有更优雅的方法来解决这个问题,即“maven 方式”。

4

1 回答 1

2

您可以单独部署此模块,但仅适用于 SNAPSHOT 的发布,它没有意义。模块的部署可以通过以下方式完成:

mvn -pl TheModuleYouWouldLikeToDeploy deploy

可能您需要添加选项 -am (也制作依赖项),例如:

mvn -am -pl TheModuleYouWouldLikeToDeploy deploy

除此之外,如果您使用的是多模块构建,那么您的方法听起来是错误的,为什么不通过 mvn deploy 部署整个构建?让通过像 Jenkins 这样的 CI 工具来完成这项工作可能会更好。

于 2012-11-08T14:18:41.530 回答