0

我有大约 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 设置一些系统属性标志,但它仍然很难看。

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

4

1 回答 1

1

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

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

附录

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

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

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

于 2012-10-05T17:29:39.293 回答