如何组织针对多个库版本的项目代码库

时间:2015-10-01 05:43:37

标签: java git github maven-3

我正在编写一个依赖第三方库L1的小型库L2L2有多个L1需要支持的版本。每个版本的L2都绑定到给定的特定API和目标JDK。我无法控制L2

例如:

  • L2-v1.x - >我需要能够提供L1-v1.x
  • L2-v2.x - >我需要能够提供L1-v2.x
  • L2-v3.x - >我需要能够提供L1-v3.x

在git中组织代码的最佳方法是什么(我应该在master /什么分支中/我应该有多个项目/多个模块)知道我必须使用Maven构建项目并且我希望构建到尽可能简单?

提前谢谢。

编辑:所有版本的L2都在Maven Central中,所有版本的L1都必须在中心。

1 个答案:

答案 0 :(得分:1)

如果这些图书馆资源不在maven回购中,那么您可以关注" Using Git Submodules for Maven Artifacts Not in Central"。
Git submodules非常适合将repo的预设版本链接到另一个版本。

以下版本适合您的设置:

  
      
  1. 您将Maven项目设置为将父pom和您自己的项目L1作为该项目的Maven模块。

  2.   
  3. 您可以将项目导入项目中。例如L2项目at the right tag

  4.   
git submodule add /url/to/L2.git
cd L2
git checkout <L2-vy.x>
cd ..
git add .
git commit -m "Add submodule L2 at  <L2-vy.x>"
git push
  

git submodule命令现在将L2克隆存储在一个名为L2的文件夹中   Git会添加一个.gitmodule文件,如下所示:

子模块[&#34; L2&#34;]         path = L2         url = /url/to/L2.git

  

您的目录结构应该如下所示

yourParentProject
- pom.xml 
- .git
- .gitmodule
- L1
  \- pom.xml
- L2
  \- pom.xml
  
      
  1. 在您的父pom.xml中,将L2文件夹添加为模块。
  2.   
<modules>
  <module>L1</module>
  <module>L2</module>
</modules>
  

在项目L1中,您将L2添加为依赖项:

<groupId>com.github.user.L2</groupId>
<artifactId>L2</artifactId>
<version>L2-vy.x</version>
  
      
  1. 现在一切都已准备就绪。如果您在父项目上调用mvm test,您将看到它首先构建L2,然后是项目L1。
  2.         

    使用它

         

    当其他开发人员克隆您的项目时,他们还需要使用git命令安装模块:

git submodule update --init