我有一个多模块项目(扁平结构)如下
parentpom (1.1-SNAPSHOT) moduleA (inherits parentpom version, depends on moduleB(1.1-SNAPSHOT)) moduleB (inherits parentpom version) aggregator (inherits parentpom version, aggregates moduleA, moduleB)
聚合器允许我同时构建,安装和部署moduleA和moduleB,并且看起来像我期望的那样.
当我尝试发布1.1版时,我不能,因为moduleA依赖于moduleB(1.1-SNAPSHOT),导致以下错误:"由于未发布的依赖项而无法释放项目"
我认为使用聚合器将允许我对moduleA和moduleB进行"同步"发布,自动更新moduleA以依赖于moduleB(1.1).实现这一目标的正确方法是什么?
谢谢
如何发布具有未发布依赖项的多模块项目
严格回答这个问题,这是不可能的,至少对于 Maven Release Plugin 来说是不可能的。如果您不使用 Maven Release Plugin 并手动进行发布,那么无论如何您都不应该这样做。
原因:发布版本的构建应该是可重复的,稍后从其源代码构建它应该给出完全相同的结果。在某些已发布的 POM 中拥有一些 SNAPSHOT 依赖关系完全违背了这一目标。这就是 Maven Release Plugin 强制执行此操作的原因。
我认为使用聚合器可以让我“同步”发布 moduleA 和 moduleB,自动更新 moduleA 以依赖于 moduleB(1.1)。实现这一目标的正确方法是什么?
版本是硬编码的吗?如果是的话,这可能就是问题所在。
moduleB 和 moduleA 不应该声明任何版本,它们从父 POM 继承它
moduleA 应该使用内置属性来声明它对 B 的依赖
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>moduleB</artifactId>
<version>${project.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
10817 次 |
| 最近记录: |