繁体   English   中英

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

[英]How can I organise my project's codebase that targets multiple library versions

我正在写一个依赖于第三方库L2的小型库L1 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。

如果这些库源不在maven repo中,那么你可以遵循“ 使用不在中心的Maven工件的Git子模块 ”。
Git子模块非常适合将repo的预设版本链接到另一个版本。

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

  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

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

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

您的目录结构应如下所示

yourParentProject
- pom.xml 
- .git
- .gitmodule
- L1
  \- pom.xml
- L2
  \- pom.xml
  1. 在您的父pom.xml中,您将L2文件夹添加为模块。
<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。

使用它

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

git submodule update --init

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM