具有各种不同依赖项的Maven多模块项目设置
让我先说一句:我对Maven是全新的。也就是说,我四处搜索,但没有找到以下问题的答案。我找到了类似问题的答案,但不是这个场景。或者我只是误解了答案,这可以通过简单的多模块设置来解决 我将具有以下依赖关系层次结构:具有各种不同依赖项的Maven多模块项目设置,maven,maven-3,maven-release-plugin,multi-module,Maven,Maven 3,Maven Release Plugin,Multi Module,让我先说一句:我对Maven是全新的。也就是说,我四处搜索,但没有找到以下问题的答案。我找到了类似问题的答案,但不是这个场景。或者我只是误解了答案,这可以通过简单的多模块设置来解决 我将具有以下依赖关系层次结构: database | | | +---core | | | | | +---business | | | | | +------App1 | | | | | +
database
| |
| +---core
| | |
| | +---business
| | |
| | +------App1
| | |
| | +------App2
| |
| +---------------App3
|
+----------------------App4
我想让它正常工作,这样更改只会导致任何“上游”模块/应用程序的新版本。这确实是多模块maven设置的一个简单案例,还是我需要做其他事情?如果您希望发布一个组件会产生每个项目的新版本,只需使用: 文档 根据doc,这将:
- 检查源中是否没有未提交的更改
- 检查是否没有快照依赖项
- 将POMs中的版本从x-SNAPSHOT更改为新版本(系统将提示您输入要使用的版本)
- 转换POM中的SCM信息以包括标记的最终目的地
- 对修改后的POM运行项目测试,以确认一切正常
- 提交修改后的POM
- 用版本名标记SCM中的代码(将提示输入)
- 将POMs中的版本切换到新值y-SNAPSHOT(也会提示输入这些值)
- 提交修改后的POM
- 移动版本1.0-快照-->1.1-快照
- 标签1.0
- 生成1.0.jar(ou war或其他任何内容)
[...]
[...]
[...]
org.apache.maven.plugins
maven发布插件
2.4.2
v@{project.version}
[...]
[...]
[...]
打电话
mvn release:prepare
mvn release:perform
继承与依赖
你可以考虑两种不同的方法:
- 继承,即父模块和多/子模块
- 换句话说,聚合:依赖项的使用
因此,数据库很少处于层次结构的顶端。您所说的“更改只会导致任何“上游”模块/应用程序的新版本”是什么意思?您想让App4只使用业务或核心的所有子级的发布版本吗?你想发布一个项目会导致所有对象的全新发布吗?数据库的更改会影响所有应用,因为所有应用都依赖于它。核心的变化只会影响应用程序1、2和3,业务的变化只会影响应用程序1和2。是的,我希望它能发布所有应用程序的全新版本(基于我刚才提到的逻辑)。此外,仅发布App4时,应仅
jar
(这是Java)数据库模块和App4.OK的文件,因此您应该调整层次结构。我会在一个。。。没几次!你说的“调整你的层次结构”是什么意思?请看下面的答案,用几句话来说,我认为数据库不应该位于你的层次结构的顶部,如果你想让两个项目有两个不同的生命周期,你不能将它们用作同一个项目的子模块。谢谢你的回答。只有一件事:在我的示例中,数据库实际上位于层次结构的底部(尽管它实际上位于图片的顶部)。我想说明的是,模块数据库由所有应用程序共享。OK。这更清楚,我认为答案仍然合适。这能回答你的问题吗?
Main Project (sometimes EAR) --> POM
|-- Business Object / DAO --> POM
| |-- Domain 1 --> JAR
| `-- Domain 2 --> JAR
|-- Core (depends on BO) --> JAR
`-- IHM / Web App (depends on core) --> WAR