如何使用项目间依赖项释放Maven多模块项目? llets说我们有3层项目。 DB,业务,网络和汇总POM。 项目 | -db | | -pom.xml | - 企业 | | -pom.xml | -pom.xml 所有模块都将被释放并分支到...

问题描述 投票:0回答:3

DB-0.1-SNAPSHOT Business-0.1-SNAPSHOT which depends on DB-0.1-SNAPSHOT Web-0.1-SNAPSHOT which depends on Business-0.1-SNAPSHOT

执行所有版本时,所有版本都更新为0.1,但是准备失败,因为尚无依赖。

一种解决方案是为每个模块创建不同的项目,并在使用

release:prepare

插件将依赖项更新为0.1
时一个一个释放它们。

但是我不喜欢这个想法,因为它需要大量的配置和脚本。因此,我更喜欢使用聚合并使用单个命令发布所有模块,但是正如我在上面写的那样,当Release插件试图构建时,尚未在存储库中。

有任何方法可以管理这些项目间依赖关系? thanks.

upd:
即安装目标失败。  

DB构建 - 确定(任何存储库中都没有快照和发行版本)
business-失败(在存储库中找不到DB-0.1-Snapshot。但它甚至不应该在那里!)

我使用Maven 3.0.2并发布插件2.1

    
您的项目应仅在父(项目)中定义一个版本。并让所有其他模块都有父母关系。这意味着您没有聚合。您具有多模型构建。

DB-0.1

这将解决您的问题(可能是您可以在此处以一个例子为例

)。

对于多模块项目,当它因儿童快照依赖性而失败时,请尝试 发行:清洁发行:准备发行版:perform -dignoresnapshots =true

Hope它有帮助

    我能够使用Maven 3.3.9成功地做到这一点...但让我描述我的案例场景:
  1. I使用称为Liferay的Java框架,其中有一个称为服务构建器的工具,可以使用MAVEN构建和部署服务,并具有确切的结构:
  2. versions:use-releases

您可以看到,Portlet App模块是构建的,服务是一个依赖项,这是一个.jar文件,它包含接口以及其他服务以供服务工作。

通过方式,我使用不同版本的模块在项目中做到了这一点。我发现了一篇有趣的文章,讨论了这种做法:
maven aggregation dependency-management maven-release-plugin multi-module
3个回答
5
投票
Maven照顾了该订单,这很好...但是服务依赖性是基于Portlet源代码构建的,目标是在父级项目中运行的目标:

Business-0.1

...因此,依赖关系受到的影响。 Portlet应用程序的源代码(听起来有点疯狂)。在我的情况下那是一个棘手的部分。
那么,如何使服务依赖关系构建和部署以使用它?

well,解决方案是使用Maven-Release-Plugin中的配置,该配置使Maven可以在任何项目中的DB-0.1阶段运行特定的目标。我所做的就是在父pom.xml(服务层)中的Maven-Release-Plugin声明中添加此配置:


2
投票

Maven能够用我们首选的版本编号部署父母和每个孩子模块(将要求您输入它们)。

Summarized答案和建议:尝试使用

Service Layer |-pom.xml (version 1.12.0-SNAPSHOT) |-Service Portlet | |-pom.xml (version 1.16.0-SNAPSHOT)<--- |-Service | Artifact dependency | |-pom.xml (version 1.5.0-SNAPSHOT)-----

2
投票
mvn release:prepare

mvn:perform

应按照订单部署份量和模块。
我希望这至少在5年后激发了类似情况的某人。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.