GitHub私有仓库上的Java依赖性管理



我的团队使用GitHub.com组织将我们所有的源代码保存在私人转发中。(以前,我们的旧工作流程是通过电子邮件发送Dropbox链接(。大多数时候,每个repo都是一个独立的项目,没有任何其他依赖性(唯一的依赖性是第三方开源库(。或者,如果存在某种依赖性,那么.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 Package的产品正是为了这个目的。

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

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

最新更新