如何从Maven释放中排除非修改(SCM)模块
-
13-10-2019 - |
题
我有巨大的项目包含大约200罐,当我准备发行版Maven为所有罐子准备时?排除他们?
我不想单独重新介绍罐子(超过200个)。
例如:我想为父母重新介绍,但我不想重新介绍尚未修改的jar4
-Parent
---------Module1
----------------jar1*
----------------jar2*
---------Module2
----------------jar3*
----------------jar4
解决方案
例如:我想为父母重新介绍,但我不想重新介绍尚未修改的jar4
语法是
mvn -pl Module1,Module2/jar3 <your maven goals here>
(在这种情况下,您要构建所有模块1和jar3的模块2)
现在,棘手的部分是如何将参数组装到-pl。我很确定没有Maven的方法可以做到这一点,因此您可能必须编写一个为您完成的Shell脚本(或Ruby,Groovy,Perl Python等)。
基本上,您的脚本必须做什么:
- 查找给定目录中的所有Maven项目目录(包含pom.xml的目录)
- 在整个层次结构中查找所有更改的文件(使用SVN,CVS或任何调用)
- 将每个更改的文件映射到其中一个项目(通过比较路径),收集列表中的所有匹配项目
- 现在,通过进行一些父/子女优化(如果存在给定父母的所有孩子,请删除孩子并添加父母)来优化列表。重复执行此操作,直到到达根部层次结构为止。
- 从剩余列表中,提取相对路径,与逗号一起加入它们,然后使用该值来开始您的Maven过程
-pl
范围。
不隶属于 StackOverflow