Java 我如何组织我的项目';针对多个库版本的代码库
我正在编写一个小型库Java 我如何组织我的项目';针对多个库版本的代码库,java,git,github,maven-3,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 在知道必须使用Maven构建项目并且希望构建尽可能简单的情况下,用git组织代码的最佳方式是什么(我应该在master中放置什么/我应该有什么分支/我应该有多个项目/多个模块) 先谢谢你 编辑:所
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
编辑:所有版本的L2都在Maven Central中,所有版本的L1都必须在Central中。如果这些库源不在Maven repo中,则您可以遵循。“
这对于将回购的预测版本与另一个版本联系起来非常有用 以下是适合您的设置的版本:
L1
作为该项目的Maven模块谢谢你的回答。我编辑了我的问题:事实上,L1的所有代码都应该在中央,L2版本已经作为依赖项提供。它对您的方法有何影响?@kraal正如链接文章所说,如果L2在maven中,那么您就不需要模块方法:一个简单的依赖声明就足够了。那么我如何使用不同的源JDK和目标JDK处理子模块呢?使用相同的JDK编译所有内容可能会导致意外的错误。一些项目使用模块,其他项目使用不同的分支,其他不同的项目,一些项目使用Maven限定符,但还不清楚什么是最佳实践。到目前为止,我一直在使用模块,但我不相信这是最好的解决方案。@kraal我同意,在这一点上我没有足够的经验提供建议。我将把我的答案留给其他可能适用的人。
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
yourParentProject
- pom.xml
- .git
- .gitmodule
- L1
\- pom.xml
- L2
\- pom.xml
<modules>
<module>L1</module>
<module>L2</module>
</modules>
<groupId>com.github.user.L2</groupId>
<artifactId>L2</artifactId>
<version>L2-vy.x</version>
git submodule update --init