首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >良好的maven项目设计或反模式设计方法

问良好的maven项目设计或反模式设计方法
EN

Stack Overflow用户
提问于 2013-03-22 12:12:24
回答 2查看 979关注 0票数 2

上下文:

我有一个多模块maven项目,如下所示:

根- ModuleA

代码语言:javascript
复制
      ModuleB
      ModuleC
      ModuleD
      .......

它们在根下大约有25个模块:

  • 其中一些代表了应用程序的核心(5个模块)。
  • 其余的每个模块都表示与a客户类型相关的业务流程实现。这些模块之间是完全独立的。

在打包或发布“Root”项目时,生成的工件是一个单独的ZIP文件,该文件聚合了与“根”模块相关的所有JAR。

单个ZIP文件是根据程序集描述符生成的,它表示交付工件。

在目标环境的部署时,将在一个目录下解压缩单个ZIP,该目录由提供最终服务的java web应用程序“engine”使用(类加载)。

约束

  • 一方面的“业务限制”,
  • 以及减少另一方不同版本之间的回归的意愿

由于上述限制,我们采用了以下发布场景:

  • 要么我们发布根和所有的子模块。这意味着最终的ZIP将使用相同的版本扩展所有子模块JAR。ZIP将包含类似于: ModuleA-1.1.jar,ModuleB-1.1.jar,ModuleC-1.1.jar,ModuleC-1.1.jar,.,ModuleX-1.1.jar。
  • 或者我们发布根和它的子模块的几个,我们想要重新更新这些子模块。最终的ZIP将扩展所有子模块JAR :释放的子模块将与上一个发布版本聚合,未发布的子模块将与另一个“适当”版本聚合。例如,如果我们发布了这样一个增量版本,ZIP将包含类似于ModuleA-1.2.jar、ModuleB-1.1.jar、ModuleC-1.2.jar、模块化-1.1.jar、.、ModuleX-1.1.2.jar的内容。

这两种情况是通过以下因素得以实现的:

  • 在第一个场景中,要么将模块声明为MAVEN模块的模块‘
  • 或者将模块声明为第二种场景,即增量场景的MAVEN依赖项‘依赖’。

问题

在第二个场景(增量)中,maven-release:准备将所有模块(、ModuleB、ModuleD )上传到SCM ( ModuleA,ModuleB,ModuleD),.ModuleX,它在上传发布的模块和未发布的模块,而“非发布模块”在pom中被声明为“依赖”,而不是作为“模块”。

有没有办法避免上传“非发布”模块?有没有办法向SCM svn提供者注入“exlcude定向列表”?

[2]更全面的问题是,所采用的方法是否正确?还是反模式用法?在这种情况下,应该有什么替代办法?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-03-22 12:22:52

在我看来,你的做法就像反模式。我建议只将项目放在您希望一起发布的同一层次结构中。具有不同版本生命周期的项目应该独立存在,否则您将继续遇到您提到的问题。如果从根目录(多模块设置)运行发布插件,则该根目录的所有内容都将在SVN中标记。

在您的例子中,我可能会创建以下层次结构:

  • 核心
  • 每个客户类型一份
  • 根据您的结构,每种类型可能有一个包(zip)

我会根据您创建发行版的方式对其进行分组。这可能意味着您必须运行几次发布插件,而不是只运行一次,当你做一个改变,例如在核心,但它将是一个更干净的。

然后,您的打包项目将引入所有依赖项,并打包/组装它们。

如果您有常见的配置选项,我建议将它们放入公共的parent pom中。这不一定是您的根(多模块) pom。

票数 1
EN

Stack Overflow用户

发布于 2013-03-22 16:08:37

您是否尝试过使用-r参数运行maven版本插件+要发布的所有模块的列表?

基本上,这个参数允许您指定应该对其执行maven命令的模块列表。(如果省略它:所有子模块都将包括在内,这是默认行为)

请参阅有关此命令行这里的更多详细信息。

我从不尝试在maven发布插件中使用它,我也不知道它是否会起作用,特别是在SCM操作方面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15570004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档