当前位置: 首页 > 知识库问答 >
问题:

Maven托管依赖关系-从父pom解析${project.version}

湛钊
2023-03-14

如何从父POM解析占位符${project.version}的托管属性?我希望它是全局解析的,因此当父pom具有版本2时,${project.version}也将解析为版本2。

在父级pom中,我有:

<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>2</version>
<packaging>pom</packaging>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>my.group</groupId>
            <artifactId>dep</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>     

在孩子身上我用

<parent>
    <groupId>my.group</groupId>
    <artifactId>parent</artifactId>
    <version>2</version>
</parent>
<version>1</version>
<artifactId>child</artifactId>

这是意料之中的行为吗?我使用的是maven 3.0.4。

共有1个答案

丁勇
2023-03-14

您必须跳过child中的 标记,但保留 ... 标记。

http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#project_inheritage

需要注意的一个因素是,这些变量是在继承后处理的,如上所述。这意味着,如果父项目使用变量,那么它在子项目中的定义,而不是父项目中的定义,将是最终使用的。

 类似资料:
  • 问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父

  • 假设<code>B:1.0.1,但是子项目应该依赖于<code>A:1.2(有意覆盖传递依赖性)。 很容易发现 ,并从它的所有子POM中删除样板文件。不幸的是,下面的设置导致在最终的工件中使用两个版本:< code>A:1.0.1(作为< code>B:1.0.1的依赖项)和< code>A:1.0.2(来自父pom中的显式声明)。 如何在所有子项目中强制使用< code>A:1.0.2版本,并在

  • 我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例

  • 问题内容: 假设我有四个项目: 项目A(依赖于B和D) 项目B(依赖于D) 项目C(依赖于D) 项目D 在这种情况下,如果我运行项目A,则Maven将正确地解决对D的依赖关系。如果我理解正确,则Maven始终以最短的路径获取依赖关系。由于D是A的直接依赖项,因此将使用B内指定的D而不是D。 但是现在假设这种结构: 项目A(依赖于B和C) 项目B(依赖于D) 项目C(依赖于D) 项目D 在这种情况下

  • 我已经在pom中配置了本地maven存储库。xml。当我构建项目时,它会显示依赖项下载错误(请参阅下面的日志)。Maven正在尝试从我的本地Maven存储库下载所有依赖项。 日志 这是我的pom。xml文件 本地存储库是http://XXX。XXX。XX。XXX:8081/artifactory/libs本地发布 xml。背景

  • 我在同一个IntelliJ项目中加载了两个Maven模块。一个模块依赖于另一个模块。如果我更改了它的版本,那么我的第二个模块将无法再解析依赖关系,除非我首先显式运行<code>mvn安装 当模块加载到同一项目中时,IntelliJ不能从源模块中解析Maven依赖关系吗?