0

我有一个包含大约 200 个 jar 的巨大项目,当我准备发布 maven 时为所有 jar 准备,但肯定有自上次构建以来尚未修改的 jar,所以有什么方法可以检查自上次从 scm 构建以来 jar 是否已被修改? 并排除它们?

我不想单独释放罐子(超过 200 个)。

例如:我想为父级制作 relase 但我不想发布尚未修改的 jar4

-Parent

---------Module1

----------------jar1*

----------------jar2*

---------Module2

----------------jar3*

----------------jar4   
4

1 回答 1

0

例如:我想为父级制作 relase 但我不想发布尚未修改的 jar4

这个的语法是

mvn -pl Module1,Module2/jar3 <your maven goals here>

(在这种情况下,您要构建所有 Module1 和 Module2 的 jar3)

现在棘手的部分是如何将参数组装到-pl。我很确定没有 maven 方法可以做到这一点,所以你可能必须编写一个 shell 脚本(或 Ruby、Groovy、PERL python 等脚本)来为你做这件事。

基本上,您的脚本必须执行的操作:

  • 在给定目录中查找所有 maven 项目目录(包含 pom.xml 的目录),对它们进行反向排序(首先是最深的路径)
  • 在整个层次结构中查找所有更改的文件(使用 svn、cvs 或任何调用)
  • 将每个更改的文件映射到其中一个项目(通过比较路径),将所有匹配的项目收集到一个列表中
  • 现在通过进行一些父/子优化来优化列表(如果给定父级的所有子级都存在,则删除子级并添加父级)。重复执行此操作,直到到达根层次结构。
  • 从剩余的列表中,提取相对路径,用逗号连接它们,并使用该-pl参数值启动您的 maven 进程。
于 2010-12-29T14:12:52.223 回答