Maven使用插件/扩展定制构建的最佳实践?

Maven使用插件/扩展定制构建的最佳实践?,maven,build,alfresco,Maven,Build,Alfresco,我正在寻找关于如何构建由多个模块组合而成的工件的建议,而无需重复大量样板文件: 我们有一个软件,它作为.war部署到Tomcat中,作为.amp部署到Alfresco中,在同一个Tomcat实例上运行 关于Alfresco/.amp的所有内容对于问题的范围来说都无关紧要。为了简单起见,只需假设一个关于Maven的.war工件 我们使用OpenCore模型,有一个免费版本,由一些代码组成,这些代码最终包含在一个.amp和一个.war文件中,该文件包含角度前端和几个后端库 目前,我们的软件中有两个插

我正在寻找关于如何构建由多个模块组合而成的工件的建议,而无需重复大量样板文件:

我们有一个软件,它作为
.war
部署到Tomcat中,作为
.amp
部署到Alfresco中,在同一个Tomcat实例上运行

关于Alfresco/
.amp
的所有内容对于问题的范围来说都无关紧要。为了简单起见,只需假设一个关于Maven的
.war
工件

我们使用OpenCore模型,有一个免费版本,由一些代码组成,这些代码最终包含在一个
.amp
和一个
.war
文件中,该文件包含角度前端和几个后端库

目前,我们的软件中有两个插件-每个插件提供一个额外的
.amp
文件
.war
添加一个
.jar
/config文件,我们有很多扩展-每个扩展都覆盖/扩展一些角度前端文件,还向
.war
和/或
.amp

现在,我正试图从一个古老的基于ant的构建设置迁移到Maven,它基本上只是在部署时在基本安装上复制插件/扩展

我需要能够创建这样的配置:
core+plugin-a+extension-b
core+plugin-a+plugin-b+extension-c
——这样我就有几个
.amp
工件和一个
.war
工件用于每个配置

如果还可以聚合扩展,比如
core+plugin-a+plugin-b+extension-c+extension-d

目前,我正在为
.war
使用maven汇编插件,为angular使用maven前端插件,汇编插件只是将编译后的工件复制到war中

.war
本身就是一个maven模块

我可以继续使用这个策略,为每个扩展和每个插件创建模块,但接下来我需要一个模块,用于每个扩展和插件的可能组合

更糟糕的是,一些扩展/插件是商业化的,并且存在于不同的存储库中——所以我不能把所有东西都添加到OpenCorePOM中

我已经研究了配置文件,但我不确定这是否能解决我的问题——因为我需要一个类似于所有子模块的中央注册表的东西

mvncleanpackage-Pextension-a、extension-b、plugin-a这样创建工件的东西会很棒


如何用Maven解决这个问题?有没有具备这些要求的项目,我可以看看它们是如何解决的?

这个答案有点推测性,因为我对Alfresco一无所知

你有没有想过写一个Maven插件来下载一个扩展/插件(可能是从你的存储库中下载的zip文件),将它解压并应用到你的项目中

然后你可以用不同的扩展/插件列表调用maven插件。

最后我找到了

允许使用git/maven/http/etc.pp依赖的
WORKSPACE
文件的概念非常适合于此。Being还可以使用Bazel构建角度前端,创建轻量级Docker图像以及缓存的增量构建,这使它非常适合


然而,从Maven到Bazel的过渡并不直接,但在学习了这些概念之后,我不会回头看

嘿,谢谢你看它-忽略alfresco的部分-它们其实并不重要-它基本上就像一个罐子的拉链,alfresco为它提供了一个maven插件。但这并不重要——主要的问题是如何编写这些东西——我发现了maven tiles插件:这至少会减少样板文件。至于编写专用插件:是的,我已经考虑过这一点,这可能是我最后的选择,但我们是一支小球队,即使从索纳泰普·马文的书来看,这也可能不是那么直截了当。但这是个好主意。我想我计划做的并不在maven“开箱即用”的范围内——我也考虑过放弃这个想法,并尝试实现一个插件系统,以避免“所有组合的单一战争”问题。。。