maven项目设计或反模式设计的良好方法
上下文: 我有一个多模块maven项目,看起来像: 根——模 根目录下大约有25个模块:maven项目设计或反模式设计的良好方法,maven,maven-release-plugin,Maven,Maven Release Plugin,上下文: 我有一个多模块maven项目,看起来像: 根——模 根目录下大约有25个模块: 其中一些代表了应用程序的核心(5个模块) 其余的每个模块都表示与a类客户相关的业务流程实现。这些模块之间完全独立 打包或发布“Root”项目时,生成的工件是一个单独的ZIP文件,聚合了与“Root”模块相关的所有jar 单个ZIP文件是根据程序集描述符生成的,它表示交付工件 在目标环境上部署时,单个ZIP被解压到一个目录下,由一个“引擎”(提供最终服务的JavaWeb应用程序)使用(类加载) 约束 从
- 其中一些代表了应用程序的核心(5个模块)
- 其余的每个模块都表示与a类客户相关的业务流程实现。这些模块之间完全独立
- 从一个侧面看"业务约束",
- 并且愿意减少不同版本之间的回归 另一边
- 要么释放根,要么释放所有子模块。意思是 生成的ZIP将使用相同的 版本拉链将包含类似以下内容: [ModuleA-1.1.jar,ModuleB-1.1.jar,ModuleC-1.1.jar,ModuleD-1.1.jar, ……,ModuleX-1.1.jar]
- 或者我们释放根和它的几个子模块,这些子模块是我们想要重新更新的。 生成的ZIP将聚集所有子模块JAR:已发布的子模块将与最后发布的版本聚合,未发布的子模块将与另一个“适当”版本聚合。 例如,如果我们进行了这样的增量发布,ZIP将包含类似于[ModuleA-1.2.jar、ModuleB-1.1.jar、ModuleC-1.2.jar、ModuleD-1.1.jar、, ……,ModuleX-1.1.2.jar]
- 第一次将模块声明为MAVEN modules'module' 情景
- 或者将模块声明为MAVEN依赖项“dependency” 第二个场景,增量场景
谢谢。对我来说,你的方法看起来像反模式。我建议只在您希望一起发布的同一层次结构中包含项目。具有不同版本生命周期的项目应该独立运行-否则您将继续遇到您提到的问题。如果从根目录(多模块设置)运行发布插件,则该根目录的所有内容都将在SVN中标记 在您的情况下,我可能会创建以下层次结构:
- 核心
- 每个客户类型一个
- 根据您的结构,每种类型可能有一个包(zip)
如果您有公共配置选项,我建议将它们放在公共
父级pom中。这不必是您的根(多模块)pom。您是否尝试使用-r
参数+您想要发布的所有模块列表来运行maven发布插件
基本上,此参数允许您指定应针对其执行maven命令的模块列表。(如果省略:将包括所有子模块,这是默认行为)
请参阅有关此命令行的更多详细信息
我从未尝试将它与maven release插件一起使用,我也不知道它是否有效,尤其是在SCM操作方面。Hi,建议的设计更简洁,但它会为交付团队带来更多工作。我要说的是,如果可以声明Maven模块而不必承担“模块”应该是根项目目录中的物理目录的义务,那就太好了。我在想,如果有一种smlink插件允许在根项目级别定义“模块”,然后通过发布根项目,它的所有“子模块”也将被发布,并且只有这些子模块将被上传到SCM。你觉得怎么样?
ModuleB
ModuleC
ModuleD
.......