2011-07-03 71 views
2

我正在与一个非常大的项目,并希望在其多个分支上工作。其中一个是目前另一个的老版本,而且poms是一样的。我想避免更改pom文件中的版本号,因为这可能需要重新编写所有这些文件,并且稍后会使合并更加棘​​手。这样做的最简单方法是什么,以便mvn clean install生成的罐子不会覆盖.mvn/repository中的其他分支中的罐子?多项目分支与maven

:我与git的工作,发现git-new-workdir脚本(在GIT源回购可用)是非常有用的在这里,它至少可以让源代码树的层次结构产生的罐子合作存在于不同的子目录中。


所以当然一​​个简单的答案就是每个分支都有一个存储库。例如

  • .m2目录/库
  • .m2目录/ BRANCH1 /库

然后一个可以运行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?)无论如何,它似乎并没有全部下载,或者至少编译速度比预期的要快得多。

回答

2

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

第二好的东西是versions-maven-plugin,它可以自动更改不同分支中的poms。可悲的是,我并不知道任何组件都可以让你自动化阻止git与其他组件一起合并这些更改的过程。