我有大约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。
如何设置&#34;旗帜&#34;在pom.xml中的那些特殊项目中,针对special-profile
运行始终?
现在我已经设置了个人资料/激活/文件/扩展,并在每个特殊项目中创建了特殊的空标记文件,但这非常难看。 我也尝试使用maven-properties-plugin设置一些系统属性标志,但它仍然很难看。
必须有更多的方法。这是一个糟糕的设计吗?
答案 0 :(得分:1)
执行此操作的标准方法是使用两个级别的父项目。我已经使用“global-parent”和“webapps-parent”完成了这项工作,其中包含常用配置/配置文件,仅适用于webapp组件。但是,我发现你需要像“多重继承”这样的东西,这在Maven中并不存在。
否则,在我看来,“文件存在”激活是可以接受的。
<强>附录强>
在不知道特殊模块的“特殊”含义的情况下,很难回答有些主观的问题“这是一个糟糕的设计吗?”
也许封装所有其他插件的自定义插件会“更好”或“更多Maven-ish”,但在一天结束时 - 您的构建是否可维护且易于运行(即svn co project; cd project; mvn package
)?
如果是这样,你已经实现了目标。