【问题标题】:Access maven property using dependency management使用依赖管理访问 Maven 属性
【发布时间】:2018-11-14 20:32:23
【问题描述】:

我正在使用 maven 的依赖管理将 POM 导入到我的项目 Y 中,如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.abc</groupId>
            <artifactId>X</artifactId>
            <version>1.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我的工件 X 具有以下我想在项目 Y 的 POM 中访问的属性:

<properties>
    <property1>value1</property1>
    <property2>value2</property2>
</properties>

我无法将 X 中定义的属性访问到项目 Y 中。我知道使用上述方法我无法使用插件管理,但我无法在网络上找到与属性相关的任何内容。

另外请注意,我不能使用工件 X 作为父级,因为我们已经定义了项目级父级。

能否请您指导一下。

【问题讨论】:

  • 将依赖项放在dependencyManagement 之外。在dependencyManagement`中,您只定义使用哪个lib,如果它在其他模块中使用
  • @Jens:我们只需要使用依赖管理导入某些依赖项,因为它是一种 BOM

标签: java maven dependency-management maven-dependency


【解决方案1】:

您只能从另一个 pom 继承属性,如果您将其声明为父级。导入 import 类型的 pom 仅导入其依赖项,如 documentation 中所述。由于在您的情况下无法使用另一个 pom 作为父母,让我建议一个替代方案:

codehaus Properties Maven Plugin 可以从外部文件加载 maven 属性。它甚至可以使用classpath: URL 来加载文件。因此,您可能会尝试从另一个依赖项加载它们(应该有一个适当的scope,因为您可能不希望该依赖项的 JAR 在运行时挂起)。

【讨论】:

  • 感谢大卫的建议!实际上我已经知道 properties-maven-plugin 但现在不想从外部读取属性文件。您是否有任何文档或链接明确指定当我们使用依赖管理导入 POM 时可以继承所有内容。
  • 谢谢大卫!实际上,我对文档感到困惑,因为他们没有明确提到不能继承的内容..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2023-04-09
  • 2011-09-11
  • 1970-01-01
  • 2012-06-30
  • 2012-05-18
  • 1970-01-01
相关资源
最近更新 更多