【问题标题】:Build maven modules from parent without parent reference从没有父引用的父构建 Maven 模块
【发布时间】:2013-05-16 14:16:53
【问题描述】:

我已经为几个运行良好的模块建立了反应堆构建。我的子模块没有引用父 pom。

由于我将我的子模块用于多个产品,因此存在多个父 pom,因此无论如何我都不能对子模块进行父引用。

现在我希望父 pom 能够更改子模块中的一些设置。不参考父pom如何实现?

在子模块 pom 中定义一些可能会被父级否决的默认值会很棒。

【问题讨论】:

  • 父级中的值被子级覆盖。它更像 Java 或 C#,在这方面不像 Ant。

标签: maven tycho


【解决方案1】:

除非您有父 POM 引用,否则您不能从父 POM 继承。这是设计使然:为确保可重复性,构建模型应可从模块的 POM 计算。

Maven 构建的唯一额外配置来源是settings.xml 和命令行。因此,作为一种解决方法,您可以使用在命令行上设置的不同属性两次构建相同的源代码。

【讨论】:

  • 虽然这个答案是我所期望的,但我想完善我的问题,也许还有另一种方法可以实现我的目标:我的子模块是一个 Eclipse 插件,它可能是为 32 位或 64 位构建的.这取决于它应该去哪里的产品。所以我有多个定义 64 位或 32 位的产品 pom(父 pom)。根据您的回答,我在调用父 pom 时必须使用命令行参数,这是正确的吗?
  • 如果你坚持从相同的来源构建不同的东西,是的。
【解决方案2】:

在子模块 pom 中定义一些可能会被父级否决的默认值会很棒。

这就是Maven inheritance。但与 Java 一样,只有 1 个 pom 可以是当前模块的父级。可能存在继承层次结构,但这会使项目更加复杂。

在我的一个大项目中,我最终得到了具有基本设置的父 pom,并且每个模块都引用了当前版本 (SNAPSHOT)。 (我使用了引用以前显式版本的模块,这令人困惑。)这让生活更轻松,发展更快。

然后当然每个模块都可以覆盖一些设置。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2013-02-23
    • 2011-11-14
    • 2012-04-13
    相关资源
    最近更新 更多