0

我有一个 Maven 多模块项目:

    • 公地
      • 公共模块
    • 插件
      • 插入

commons 和 plugins 没有相同的父级,并且是“独立的”。

在 commons-module 中我定义了 2 个配置文件,projectA 和 projectB。在每个配置文件中,我定义了属性,例如 dep.version、dep1.version 等……稍后我在dependencyManagemnt 中将这些属性用于“dep”和“dep1”部分的依赖项中的版本部分。

在插件(插件的父级)中,我在 commons-module 上有一个依赖范围导入以获取依赖项列表。当我构建插件模块时,我是否执行 -PprojectA 或 -PprojectB 似乎并不重要:maven 说它们不存在。它们确实存在,但在我导入的公共模块中。所以当我 mvn 依赖项时,我得到的依赖项没有正确的版本:树

我想要实现的目标是什么,我没有错吗,这是一个 Maven 错误,还是一个不支持的功能?有人知道吗?

谢谢,内森。

4

3 回答 3

2

导入范围仅导入依赖项管理,而不是依赖项本身。您仍然需要声明对工件的依赖项,然后将从依赖项管理中获取版本和范围等。

我认为 import 不适用于 pluginManagment 部分。您链接到的文档仅提及dependencyManagement,而我看到的唯一其他提及是邮件列表未回答的问题。

于 2013-01-22T15:33:45.167 回答
1

依赖项不允许更改仅使用这些依赖项的模块的 POM。这不会是一件安全的事情。想象一下,您正在向您的项目添加另一个依赖项,突然构建停止工作,因为该依赖项实际上覆盖了您的某些设置。

POM 插值仅从祖先项目继承设置,沿<parent>链向上。

于 2012-12-23T15:42:22.243 回答
0

您正在尝试将导入范围与配置文件一起使用。但是,配置文件不会传递激活,因此您的导入范围依赖项的 POM 中的不同依赖项不会被激活。

可能不建议这样做,但您可以拥有两个不同的公共模块,并在配置文件中包含导入范围的依赖项,这些依赖项引用您当前项目中的一个或另一个。

于 2013-05-15T18:01:36.653 回答