我正在寻找一种可能的方式来参数化多模块构建,我可以替换/指定在构建期间使用的一些文件(例如UML文件)以产生不同的输出。 构建过程保持不变,但我希望能够根据输入的UML模型生成不同的输出。
我有一个多模块项目,可以根据UML模型构建几个jar。 pom结构如下:
+ generation
- mod1
- mod2
- mod3
root 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模型,然后激活相关的模型。但是我会以这种方式失去可追溯性。
也许一种全新的方法会更好...任何建议?
答案 0 :(得分:0)
从概念上讲,我会说,Maven是围绕POM文件设计的,POM文件是正在构建的项目的模型。它不是一个将函数应用于输入并在此基础上产生输出的过程描述。
话虽如此,POM中的properties
有很多可能,然后可以在命令行上传递:-Dproperty=value
。看起来您可以将属性传递给生成源代码的任何进程。
install
。
因此,如果您这样做,最终会在本地存储库中找到父项目的一个版本,而您实际上并不知道它是什么。使用了哪些参数?然后,该工件的用户将如何处理该问题?
我不是说这不起作用,但它可能会变得毛茸茸,而且在更传统的Maven实现中不能完全发挥。
答案 1 :(得分:0)
我不完全确定我理解您的用例,但您可能需要查看: