我在公司特定的maven结构中运行Maven发布插件时遇到了一些问题。让我解释一下我所指的重构家庭的概念。我的项目是多模块项目,其中每个模块可能有一个不同于父亲的父项。
project/
pom.xml (the natural multimodule reactor father) (I list as modules all that follows)
module1/pom.xml (my parent is NOT ../pom.xml, I'm a half sibling)
module2/pom.xml (my parent is ../pom.xml, I'm a natural child) (I have a dependency on module1)
project-war/pom.xml (my parent is NOT ../pom.xml, I'm a half sibling)
我们采用这种“寄养父母”策略的原因是,我们希望默认为某些特定的“采用的兄弟姐妹”激活一些插件。例如,每个WAR项目都需要定义特定的maven-resource-plugin执行ID。由于我们要生成大约80个WAR,因此如果我们要为所有WAR添加额外的执行步骤,请想象维护。这适用于开发目的,我们确实有有效且正在运行的SNAPSHOTs构建和部署。
现在我们要发布,maven-release-plugin似乎不喜欢这个特定的结构。简而言之,由于module2需要module1,但module1有不同的父亲,release插件会将module1保持为SNAPSHOT。
我的问题是,有没有人设法与重组家庭成员一起发布项目?我是否需要在发布插件中进行任何配置才能完全发布此类项目?
答案 0 :(得分:2)
违反模块之间的继承是父母会给你带来比其他任何问题更多的问题。
这里唯一的选择是:
答案 1 :(得分:0)
经过一些进一步的测试,这是我对这个问题的结论。
Maven可以在一个简单的条件下解决重组家庭:该家族的所有成员都在反应堆中。
这意味着拥有一个超级反应堆"它既可以引用您要发布的项目,也可以引用某些模块可能声明的父poms。当然,发布插件将释放这个超级反应堆中的所有内容。如果你有许多项目都引用相同的父项目,你应该一次性发布它们。
此外,要正确生成构建模型,所有相对路径必须正确。在我的具体情况下,我们想避免这样的事情,我想我们回到设置一个固定的文件夹结构。
从发布插件中排除某些项目可能很方便,但这当然会造成潜在的不稳定。