父POM / NOOP父POM中的“仅限子配置”

时间:2013-12-22 21:09:03

标签: java maven

我有一个项目生成代码。这一代需要很长时间,因此我将它分成多个项目,每个项目产生20%的整体。原始POM成为“父POM”,孩子们依赖它,只包含一个单独的工件ID,以及一个或两个更改的属性。

不希望“构建父级”,因此它会委托给孩子,因为这需要太长时间。我只想个别地建立孩子。所以我在父母中没有“模块”部分。

现在这样做了,除了一件事:Maven在存储库中放入子级POM,它们依赖于父。但是父母本身实际上不存在。父项永远不会被执行,也不会产生任何工件。我甚至无法执行父级,因为它因“丢失文件”而失败等。构建部分中的插件配置实际上仅适用于孩子;有无事可做来构建父项,因为它并不真正作为工件存在。

我可以删除子工件对(不存在的)父工件的依赖关系, 要么 以某种方式将父POM(构建/插件,构建/资源和构建/插件管理)标记为父项本身构建时的“忽略”吗? (希望在本地回购中只为父母带来POM)

我想要的是“没有依赖性的重用”,但这似乎不可能(我不明白为什么;子jar显然不依赖于父jar,只有孩子 POM 取决于父POM。

我也看到过从“模板”生成POM的示例(消除了依赖关系),但这对我来说也没用,因为我必须在时重新生成每个子POM父模板更改。

如果我理解为什么 POM依赖被硬连接在Maven中暗示工件依赖,那么对我来说可能会更有意义吗?

用一个类比来说,当我建造一个狗屋时,我“依赖”木头和锤子......这样做。但是一旦建造了狗屋,狗屋本身就不再依赖于锤子了。

1 个答案:

答案 0 :(得分:2)

您应该在父级中没有任何内容,只有模块,dependencyManagement和build / pluginManagement,您应该通过模块部分从父级引用子级(如果要构建一个模块,请使用-pl和-am({{3你的pluginManagement部分应该包含所有具有通用配置,范围和版本的插件。你的dependencyManagement部分应该包含所有依赖项,范围和版本。你的子poms应该不包含任何版本,以及与父类不同的依赖项的范围,以及构建特定模块所需的插件。

如果你有不同的东西,那么试试这个,看看它是否有效,然后请报告问题以便进一步分析。