【问题标题】:maven import scope and profilesMaven 导入范围和配置文件
【发布时间】:2012-12-23 14:40:07
【问题描述】:

我有一个 Maven 多模块项目:

    • 公地
      • 通用模块
    • 插件
      • 插件

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

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

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

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

谢谢, 内森。

【问题讨论】:

  • “导入”是什么意思?您是否只是声明了对该工件的依赖关系?
  • 不,我声明了对范围为“import”的 pom 文件的依赖。请看import scope
  • 如果他们没有相同的父母,你为什么把他们都放在root下?
  • @DanielKaplan 有关 pom 继承与模块包含的更多详细信息,请参阅 this post

标签: maven import scope profile


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多