【问题标题】:Releasing only new version of a sub-module in maven仅在 maven 中发布子模块的新版本
【发布时间】:2015-05-05 09:02:27
【问题描述】:

这是我的用例: 假设我有一个多模块 maven 项目,我只在其中一个子模块中进行更改。修改完成后,我只想发布这个子模块的新版本,而不是发布整个项目。

有没有办法在 maven 中做到这一点?

在这种情况下,maven 推荐什么作为最佳实践?

拥有不同的子模块版本是一种好习惯吗?

【问题讨论】:

  • 我们在谈论多少个模块?
  • 没关系。假设我有一个 api 和 core 子模块,其中 api 子模块的更改频率低于 core 子模块。我试图弄清楚拥有不同的子模块版本是一种好习惯,还是多模块项目的想法是为所有人提供一个版本。

标签: maven-3


【解决方案1】:

首先按照您的要求。多模块构建的想法是使所有模块具有相同的版本,这可能意味着发布未更改的模块。 但是:

如果您开始在子模块中使用不同的版本,您将失去导致手动工作的想法和支持....

此外,如果您发布不同版本的子代,您必须确保不同版本的子代可以正常协同工作,这意味着您必须对不同版本的组合进行测试,这会大大增加测试工作量。 如果您只使用单个版本的模块,客户可以只选择一个版本,并且可以确保组件一起正常工作...我假设您在构建中进行了一些单元/集成测试...

【讨论】:

  • 但是您不同意,如果我只对一个子模块进行更改而其他子模块保持不变,那么构建整个项目的反应堆就是浪费时间和资源。跨度>
  • 如果您只看一下构建时间和工件的资源,那么您是对的,但这是在这些资源和正确测试的努力之间进行权衡。如果您将项目结构更改为几个独立的项目以具有单独的部署和发布版本,这将解决问题,但只是乍一看。因为你必须手动维护所有这些工件,这真的很难你的多模块结构越大......目前我有一个包含 300 多个模块的项目,浪费只是一点存储......这很便宜。 ..
  • 如果我们只讨论构建时间,这可以通过使用mvn -pl TheModuleChange clean package 来减少,如果您有大量模块,则可以减少构建时间...
  • 我不会称之为不一致状态。另一方面,我认为它是一种不太可维护的情况,它会导致更多的手动工作(测试、消费者网站上的混乱),而不是节省资源等效性(存储和可能是构建时间)。
  • 我刚刚找到了很好的explanation,关于你应该如何组织你的项目以及为什么没有必要(取决于情况)有父/子关系
猜你喜欢
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 2013-04-04
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多