【问题标题】:Maven DependencyManagement not workingMaven 依赖管理不起作用
【发布时间】:2014-06-03 19:13:32
【问题描述】:

我正在尝试使用 Maven 的 DependencyManagement 功能来管理我的子项目之间的项目依赖关系。

我的项目结构如下:

ProjectA - 包装 (pom) - 子项目A - 打包(战争)

项目A的pom文件有以下内容

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>${liquibase.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

我的子 pom 有以下内容:

<dependencies>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
    </dependency>
</dependencies>

但是当我这样做时,依赖项并没有被引入。如果我更改父 pom 并删除依赖管理标签,那么依赖就会被很好地拉入。

子项目 pom 具有父设置,因此它可以“看到”父 pom 文件。

你知道是什么原因造成的吗?

谢谢。

【问题讨论】:

  • 你是否使用过IDE,比如IDEA?如果让依赖项对您有用,您需要通过“强制重新导入项目”确保“内部”依赖项是最新的。如果您在那里有一些个人资料,我能想到的其他事情。因此,请确保您使用的是同一个人资料。
  • 显示更多你的 sub-pom。
  • (只是猜测)尝试硬编码版本。手动填写${liquibase-version}

标签: java maven maven-3


【解决方案1】:

请确保遵循...

  1. 检查是否在 pom 文件中定义了 ${liquibase-version}。

例如,在父 pom 文件中添加以下带有正确版本号的标签:

<properties>
    <liquibase-version>X.X.X</liquibase-version>
</properties>
  1. 确保子 pom 正确指向父 pom。 groupid、artifactid 和 version 正确匹配。

例如,在子 pom 文件中添加以下标签,其值与父 pom 文件的定义完全相同:

<parent>
    <artifactId>xxx</artifactId>
    <groupId>xxx</groupId>
    <version>xxx</version>
</parent>

【讨论】:

  • dependencyManagement 的重点应该是您不必必须将版本放在子 pom 中。
  • 这篇文章具有误导性,它忽略了使用依赖管理的全部要点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2012-06-30
  • 2020-09-20
  • 2011-04-07
  • 2023-04-09
  • 2015-07-11
  • 1970-01-01
相关资源
最近更新 更多