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

Kra*_*aal 5 java git github maven-3

我正在写一个L1依赖第三方库的小型库L2.L2有多个版本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都必须在Central.

Von*_*onC 1

如果这些库源不在 Maven 存储库中,那么您可以按照“使用 Git 子模块处理不在 Central 的 Maven 工件”。
Git 子模块非常适合将存储库的预置版本链接到另一个存储库。

这是适合您的设置的版本:

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

  2. 您将所需的项目导入到您的项目中。例如右侧标签处的L2 项目。

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
Run Code Online (Sandbox Code Playgroud)

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

子模块 [“L2”] 路径 = L2 url = /url/to/L2.git

你的目录结构应该是这样的

yourParentProject
- pom.xml 
- .git
- .gitmodule
- L1
  \- pom.xml
- L2
  \- pom.xml
Run Code Online (Sandbox Code Playgroud)
  1. 在父 pom.xml 中,将 L2 文件夹添加为模块。
<modules>
  <module>L1</module>
  <module>L2</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

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

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

使用它

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

git submodule update --init
Run Code Online (Sandbox Code Playgroud)