我正在处理一个非常大的项目,并希望在它的多个分支上工作。其中一个是目前另一个的旧版本,而poms是相同的。我想避免更改pom文件中的版本号,因为这可能需要重写所有这些版本号,以后会使合并更加棘手。最简单的方法是什么,以便mvn clean install
生成的jar不会覆盖.mvn/repository
中放置的不同分支中的jar?
注意:我正在使用git并发现git-new-workdir
脚本(git源代码中提供的)在这里非常有用至少允许源树层次结构中生成的jar共存于不同的子目录中。
当然,一个简单的答案就是为每个分支建立一个存储库。例如
然后可以运行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?)无论如何,它似乎没有下载所有这些,或者至少编译速度比预期快得多。
答案 0 :(得分:2)
您在评论中发现的解决方案是唯一非侵入性的解决方案。
下一个最好的东西是versions-maven-plugin,它可以自动更改不同分支中的poms。可悲的是,我没有意识到任何组件允许你自动化阻止git与其他人合并这些变化的过程。