Java 如何在git项目中包含库jar

Java 如何在git项目中包含库jar,java,git,maven,jar,Java,Git,Maven,Jar,我们有一组核心java库,作为jar文件发布,用于多个客户机项目。库项目和客户端项目都位于我们的git服务器(GitLab EE)上。有时客户和第三方(如分包商)可以访问项目源代码,但我们不希望他们访问核心java库的源代码 所以我需要知道的是如何在git中设置某种依赖项或类似项,以便我们能够自动获取最新版本的库文件?我一直在看git子模块,但看起来它将引入或至少提供对库项目完整源代码的访问。我也开始研究Maven,但我不清楚这是否也需要访问整个存储库。还有其他/更好的方法吗?还是Maven真的

我们有一组核心java库,作为
jar
文件发布,用于多个客户机项目。库项目和客户端项目都位于我们的git服务器(GitLab EE)上。有时客户和第三方(如分包商)可以访问项目源代码,但我们不希望他们访问核心java库的源代码


所以我需要知道的是如何在git中设置某种依赖项或类似项,以便我们能够自动获取最新版本的库文件?我一直在看
git子模块
,但看起来它将引入或至少提供对库项目完整源代码的访问。我也开始研究
Maven
,但我不清楚这是否也需要访问整个存储库。还有其他/更好的方法吗?还是Maven真的会做我想做的?或者我需要将我的jar文件发布到其他地方吗?如果需要的话,我该如何自动化这个过程,因为我不想每次更新jar文件时都要手动将其复制到某个地方(通常是这样)?

Maven和类似的二进制存储库是实现您要求的常见方法。Nexus存储诸如.jar的.dll等二进制文件,Maven能够发布和检索这些二进制文件的特定版本,并在构建项目时包含它们。正如Ryan所评论的,是一个公共二进制存储库,如果您想让全世界都访问您的.jar,您可以发布到该存储库,但是使用Nexus,您可以对二进制文件进行细粒度的访问控制


如果您使用Maven构建自己的项目,您可以使用单个命令
mvn deploy
将其配置为构建、测试并发布到您的Nexus存储库。然后客户端只需更新他们的项目以指向新版本,Maven将下载它并在类路径上使用它。这一切都非常无缝,我绝对建议您重构构建过程以使用Maven或类似产品。

Maven正是用于完成此类任务的工具。它以各种格式管理依赖关系(最典型的是JAR归档),并确保任何依赖于某个库的项目在构建应用程序时都已解决这些依赖关系。基本上,它搜索“全局存储库”(通常是Maven Central,但可以在任何远程位置),并将依赖工件(JAR)下载到用户的本地Maven repo,Maven在构建依赖应用程序时处理将这些路径添加到类路径。不需要源代码控制或查看源代码。感谢Samuel(和Ryan)的澄清-非常有用。看来我有一些关于这一切是如何结合在一起的读物要读!