与maven的多个项目分支

时间:2011-07-03 17:30:58

标签: git maven

我正在处理一个非常大的项目,并希望在它的多个分支上工作。其中一个是目前另一个的旧版本,而poms是相同的。我想避免更改pom文件中的版本号,因为这可能需要重写所有这些版本号,以后会使合并更加棘​​手。最简单的方法是什么,以便mvn clean install生成的jar不会覆盖.mvn/repository中放置的不同分支中的jar?

注意:我正在使用git并发现git-new-workdir脚本(git源代码中提供的)在这里非常有用至少允许源树层次结构中生成的jar共存于不同的子目录中。


当然,一个简单的答案就是为每个分支建立一个存储库。例如

  • 的.m2 /存储库
  • .m2 / branch1 / repository

然后可以运行mvn install -o -Dmaven.repo.local=~/.m2/branch1/repository

当然,如果可以使用旧存储库的链接进行克隆以便不必下载所有文件,那将是很好的。这可以通过

完成
$ cd .m2
$ mkdir branch1
$ find repository -type d -exec mkdir branch1/{} \;
$ find repository -type f -exec ln {} \;  branch1/{} \;

但是repository.xml似乎充满了绝对目录的url指针。 (为什么他们不能使用相对URL?)无论如何,它似乎没有下载所有这些,或者至少编译速度比预期快得多。

1 个答案:

答案 0 :(得分:2)

您在评论中发现的解决方案是唯一非侵入性的解决方案。

下一个最好的东西是versions-maven-plugin,它可以自动更改不同分支中的poms。可悲的是,我没有意识到任何组件允许你自动化阻止git与其他人合并这些变化的过程。