繁体   English   中英

参数化Maven多模块构建

[英]Parameterise a Maven Multimodule Build

我正在寻找一种可能的方式来参数化多模块构建,我可以替换/指定在构建期间使用的一些文件(例如UML文件)以产生不同的输出。 构建过程保持不变,但我希望能够根据输入的UML模型生成不同的输出。

我有一个多模块项目,可以根据UML模型构建几个jar。 pom结构如下:

+ generation
  - mod1
  - mod2
  - mod3

根pom(generation)基于存储在目录/ uml中的UML模型生成java源代码(.java)。 之后,模块(mod1 ... 3)编译此源代码的不同子集,并将输出打包为jar。

我想重用这个构建过程并将其应用于不同的UML模型。 如何在其他maven项目中重用多模块项目中定义的整个生成,编译和打包过程?

# Generate jars based upon the foo UML model
+ generation-foo
  /uml/foo.uml

# Generate jars based upon the bar UML model
+ generation-bar
  /uml/bar.uml

更新
我可以在生成项目中使用配置文件来定义不同的输入uml模型,然后激活相关的模型。 但是我会以这种方式失去可追溯性。

也许一种全新的方法会是一个更好的主意......任何建议?

从概念上讲,我想说,Maven是围绕POM文件设计的,POM文件是正在构建的项目的模型。 它不是一个将函数应用于输入并在此基础上产生输出的过程描述。

话虽如此,POM中的properties有很多可能,然后可以在命令行上传递: -Dproperty=value 看起来您可以将属性传递给生成源代码的任何进程。

不过,我可能会表示谨慎。 我在你描述的整体设计中看到了一些可能的危险信号。 如果模块(无论它们的继承关系如何)传递文件/文件夹,那么最好通过install 因此,如果您这样做,最终会在本地存储库中找到父项目的一个版本,而您实际上并不知道它是什么。 使用了哪些参数? 然后,该工件的用户将如何处理?

我不是说这不起作用,但它可能会变得毛茸茸,而且在更传统的Maven实现中不能完全发挥。

我不完全确定我理解你的用例,但你可能想看看:

  • POM继承 :在父模块中尽可能多地定义(不同的模块组可以具有相同的父模块)
  • Maven配置文件 :您可以根据所有类型的潜在约定激活,甚至是项目名称。
  • Maven Archetypes :最后我认为根据你的说法,这可能是可重用项目模板的唯一解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM