gpt4 book ai didi

java - 参数化 Maven 多模块构建

转载 作者:行者123 更新时间:2023-12-02 07:18:23 27 4
gpt4 key购买 nike

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

我有一个多模块项目,它基于 UML 模型构建多个 jar。 pom结构如下:

+ generation
- mod1
- mod2
- mod3

根 pom(生成)根据存储在目录/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。看起来您似乎能够将该属性传递给生成源代码的任何进程。

不过,我可能会表达一些谨慎的态度。我在您描述的整体设计中看到了一些可能的危险信号。如果模块(无论其继承关系如何)传递文件/文件夹,最好应该进行安装。因此,如果您要这样做,您最终会在本地存储库中得到一个您并不真正知道它是什么的父项目版本。使用了哪些参数?该 Artifact 的用户将如何处理这个问题?

我并不是说这行不通,但它可能会变得很麻烦,并且在更传统的 Maven 实现中不能很好地发挥作用。

关于java - 参数化 Maven 多模块构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com