【问题标题】:Maven can't get access to parent propertiesMaven 无法访问父属性
【发布时间】:2014-12-04 16:47:24
【问题描述】:

我有以下结构:

parent-pom (pom)
 |
  - base-component (with <parent> parent-pom </parent>)(pom)
    |
    -- child-component (with <parent> base-component </parent>)(jar)
    -- some-folder/another-child (with <parent> base-component </parent>)(jar)

在 parent-pom 中,我有类似版本的属性

<properties>
 <product-version>3.7.8</product-version>
</properties>

当我构建 child-component 并在那里使用 ${product-version} - 它构建时没有错误。 但是当我尝试构建another-child(以子组件作为依赖项)时 - 即使我设置了&lt;relativePath&gt;,maven 也无法读取${product-version} 或抛出错误Could not find artifact base-component

我认为问题是基础组件和另一个子组件之间的文件夹,但我无法将其移动到升级。

有什么想法吗?

【问题讨论】:

  • “another-child”是否使用正确的父级?
  • @wemu 我认为是的,并且“另一个孩子”是基础组件中的
  • 据我记得,您可以在 -部分中定义顺序。要么以正确的顺序构建子代,要么简单地构建具有正确顺序的父代。也许您需要另一个 POM 项目作为子文件夹所在级别的包装器。

标签: maven maven-3 pom.xml


【解决方案1】:

确保在another-child 模块中正确设置了相对路径。由于它在另一个目录下,它的父 base-component 应该在两个目录下:

<parent>
    <groupId>...</groupId>
    <artifactId>base-component</artifactId>
    <version>...</version>
    <relativePath>../../pom.xml</relativePath>
</parent>

还要确保在base-component 项目中,模块定义包含another-child 的附加路径,因此它应该类似于:

<modules>
    <module>child-component</module>
    <module>some-folder/another-child</module>
</modules>

在构建 another-child(或任何其他子模块)之前,尝试构建 (mvn install) 整个项目,从根父级开始。

【讨论】:

  • 谢谢,我已经描述了配置。仅当我首先构建基础组件时它才有效。有没有办法在不先构建基础组件的情况下单独构建子模块(另一个孩子)?
  • @DmitriyLarkin “如果我先构建基础组件”是什么意思? 如果您构建 base-componentchild-componentanother-child 构建为出色地。这就是聚合的想法。
【解决方案2】:

尝试在 pom 中设置项目目录。

家长:

<properties>
    <main.basedir>${project.basedir}</main.basedir>
</properties>

兄弟姐妹/孩子:

<properties>
    <main.basedir>${project.parent.basedir}</main.basedir>
</properties>

子女/孙子女:

<properties>
    <main.basedir>${project.parent.parent.basedir}</main.basedir>
</properties>

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 2015-11-21
    • 2016-08-17
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多