Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub私有回购上的Java依赖性管理?_Java_Maven_Github_Gradle - Fatal编程技术网

GitHub私有回购上的Java依赖性管理?

GitHub私有回购上的Java依赖性管理?,java,maven,github,gradle,Java,Maven,Github,Gradle,我的团队使用GitHub.com组织将我们所有的源代码保存在私有的repos中。(之前,我们的旧工作流程是通过电子邮件发送Dropbox链接)。大多数情况下,每个回购协议都是一个独立的项目,不依赖于任何其他项目(唯一依赖于第三方开源库)。或者,如果存在某种依赖性,那么.java文件已经被复制粘贴到另一个项目中 我最近将一些代码拆分为可重用的模块,但是当我使用在另一个项目中创建的库时,我不知道如何进行依赖性管理 我知道Gradle可以添加git回购,如下所示: gitRepository('htt

我的团队使用GitHub.com组织将我们所有的源代码保存在私有的repos中。(之前,我们的旧工作流程是通过电子邮件发送Dropbox链接)。大多数情况下,每个回购协议都是一个独立的项目,不依赖于任何其他项目(唯一依赖于第三方开源库)。或者,如果存在某种依赖性,那么.java文件已经被复制粘贴到另一个项目中

我最近将一些代码拆分为可重用的模块,但是当我使用在另一个项目中创建的库时,我不知道如何进行依赖性管理

我知道Gradle可以添加git回购,如下所示:

gitRepository('https://github.com/user/project.git') {
    producesModule('user:project')
}
但我不知道是否有办法让它与私人回购协议一起工作,也不知道是否有办法指定版本

我目前的解决方案是只构建库JAR,并使用GitHub发布标签跟踪二进制版本,当我需要在另一个项目中使用库时,我下载所需的JAR版本(通常是最新版本)并将其添加到另一个项目中的本地/lib/文件夹中,并将JAR作为本地JAR导入模块路径。当然,如果我想对库进行更改,我需要再次手动完成整个过程

我还听说您可以设置私有Gradle或Maven服务器,有些公司也可以这样做,但我想这意味着要从GitHub.com迁移

有没有办法让这项工作(不管是Gradle还是Maven,都无所谓)能够管理GitHub私人回购之间的依赖关系

有人能告诉我,解决这个问题最明智的方法是什么


谢谢。

您需要的是一个非常典型的基于maven/gradle的设置,其中

  • 您的每个项目都将生成一个带有坐标的工件 表单组的名称:版本

  • 您的项目不必明确地相互了解。它们依赖于其他项目生成的工件。这称为二进制依赖关系

  • 对于要定位二进制依赖项的项目,您将需要一个中心注册表,您可以在其中将所有工件发布到。GitHub有一款产品正是为此而命名的

  • 如果您还不想使用GitHub包,或者您的设置(项目数量、每个项目的大小、团队的大小)足够小,那么您可以在本地签出所有项目,并将它们包含到一个文件中,以便用本地项目依赖项替换二进制依赖项。复合构建的好处是,当您决定投资包注册时,build.gradle根本不需要更改

顺便说一句,在哪里运行私有包注册表并不重要。您可以使用GitHub包或其他托管服务,甚至可以在自己的服务器上运行jfrog artifactory。它与源代码的宿主位置完全无关,因此在任何情况下都不需要从GitHub迁移