【问题标题】:Enforce running profile form parent POM in pom.xml在 pom.xml 中强制从父 POM 运行配置文件
【发布时间】:2012-10-06 04:32:52
【问题描述】:

我有大约 30 个项目,其中 6 个必须有特殊(但相同)的构建过程。所有这些项目都继承自单亲。 我已经在父级中定义了特殊的构建过程。它包括几个插件和大量配置。

继承结构是这样的:

- global-parent (this is the place where special profile is defined)
   -a-parent
      -a-ear
      -a-war
      -a-ejb
      -a-special <--
   -b-parent
      -b-ear
      -b-war
      -b-ejb
      -b-special <--
   -c-parent
      -c-ear
      -c-war
      -c-ejb
      -c-special <--
  etc...

所以我不能让那些特殊项目继承另一个 pom。

如何在 pom.xml 中的那些特殊项目中设置“标志”以针对special-profile 运行始终

现在我已经设置了 profile/activation/file/extsts 并在每个特殊项目中创建了特殊的空标记文件,但这太难看了。 我也尝试使用 maven-properties-plugin 设置一些系统属性标志,但它仍然很难看。

一定有更优雅的方式。这是一个糟糕的设计吗?

【问题讨论】:

    标签: maven


    【解决方案1】:

    执行此操作的标准方法是使用两个级别的父项目。我已经用一个“global-parent”和一个“webapps-parent”完成了这项工作,它具有仅用于 webapp 组件的通用配置/配置文件。但是,我观察到您需要类似“多重继承”之类的东西,这在 Maven 中并不完全存在。

    否则,在我看来,“文件存在”激活是可以接受的。

    附录

    在不知道特殊模块到底有什么“特殊”的情况下,很难回答“这是糟糕的设计吗?”这个有点主观的问题。

    也许封装所有其他插件的自定义插件会“更好”或“更多 Maven-ish”,但归根结底 - 您的构建是否可维护且易于运行(即svn co project; cd project; mvn package)?

    如果是这样,您已经实现了目标。

    【讨论】:

    • 我会说“文件存在”可能不如基于属性激活的“Maven”。但我同意这两个层次的父母。
    • 多重继承是一种方式。另一种方法是将某种插件组合成一个“somethinl-like-a-plugin-execution”。类似于宏或类似于“导入”依赖但用于插件的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多