【发布时间】:2013-12-23 06:13:30
【问题描述】:
我有一个项目正在生成代码。这一代需要很长时间,所以我把它分成多个项目,每个项目占整体的 20%。原来的 POM 变成了“父 POM”,子 POM 依赖它,只包含一个单独的工件 ID,以及一两个更改的属性。
我不想“构建父级”,以便将其委托给子级,因为这需要很长时间。我只想单独构建孩子。所以我在父级中没有“模块”部分。
现在这可行,除了一件事:Maven 将子 POM 放入存储库中,它们依赖于父级。但实际上父级本身不存在。父级永远不会被执行并且不会产生任何工件。我什至无法执行父级,因为它由于“丢失文件”等而失败。构建部分中的插件配置真的只为孩子们; 没有什么可做的来构建父级,因为它并不真正作为工件存在。
我可以删除子工件对(不存在的)父工件的依赖吗? 或者 当构建父级本身时,以某种方式将整个父级 POM(构建/插件、构建/资源和构建/插件管理)标记为“忽略”? (希望在本地 repo 中只为父级生成一个 POM)
我想要的是“不依赖重用”,但这似乎不可能(我不明白为什么;子 jar 显然不依赖于父 jar,只有子 POM em> 取决于父 POM)。
我还看到了从“模板”生成 POM(消除依赖关系)的示例,但这对我也没有用,因为当 父模板 更改。
如果我理解为什么 POM 依赖 硬连线以暗示 Maven 中的 工件依赖,也许这对我来说更有意义?
打个比方,当我建造狗屋时,我“依赖”木头和锤子……来完成它。但是狗屋建成后,狗屋本身就不再依赖锤子来使用了。
【问题讨论】:
-
我发现我可以通过暂时“清空”父 POM 来“解决”它,因此它“构建”,并将其安装在 Maven 存储库中,但这真的很丑陋破解。