maven导入范围和配置文件

时间:2012-12-23 14:40:08

标签: maven import scope profile

我有一个maven多模块项目:

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

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

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

插件中的

(插件的父节点)我在commons-module上有一个依赖范围导入来获取依赖项列表。 当我构建插件模块时,如果我做-PprojectA或-PprojectB似乎没关系:maven说它们不存在。它们确实存在,但是在我导入的公共模块中。 因此,当我依赖:tree

时,我得到的依赖项没有正确的版本

是我正在努力实现的目标,我没有错,这是一个maven bug,还是一个不支持的功能?谁有线索?

感谢, 森

3 个答案:

答案 0 :(得分:2)

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

我认为import不适用于pluginManagment部分。您链接的documentation仅提及dependencyManagement,我见过的另一个提及是this未回复的问题到邮件列表。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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