java依赖性管理?

0vvn1miw  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(441)

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

gitRepository('https://github.com/user/project.git') {
    producesModule('user:project')
}

但我不知道是否有办法使它与私人回购,我也不知道是否有办法指定版本。
我目前的解决方案是只构建库jar,并使用github发布标记跟踪二进制版本,当我需要在另一个项目中使用库时,我下载所需的jar版本(通常是最新版本),并将其添加到另一个项目的local/lib/文件夹中,然后将jar作为本地jar导入模块路径。当然,如果我想对库进行更改,我需要再次手动完成整个过程。
我还听说你可以设置私有的gradle或maven服务器,有些公司也可以这样做,但我猜这意味着要从github.com迁移出去?
有没有办法让这项工作(不管是gradle还是maven,都无所谓)来管理github私有回购之间的依赖关系?
有人能告诉我,解决这个问题最明智的方法是什么吗?
谢谢。

67up9zun

67up9zun1#

您需要的是一个非常典型的基于maven/gradle的设置,其中
您的每个项目都将生成一个具有形式坐标的工件group:name:版本
您的项目不必明确地知道彼此。它们依赖于其他项目生成的工件。这称为二进制依赖
对于要定位二进制依赖项的项目,您将需要一个中心注册表,您可以在其中将所有工件发布到。github有一个名为github包的产品正是为了这个目的。
如果您还不想使用github包,或者您的设置(项目数量、每个项目的大小、团队的大小)足够小,您可以在本地 checkout 所有项目,并将它们包含到gradle复合构建中,这样二进制依赖项将被本地项目依赖项替换。复合构建的好处是,当您决定投资于包注册时,build.gradle完全不需要更改。
顺便说一句,在哪里运行私有包注册表并不重要。您可以使用github包或其他托管服务,甚至可以在自己的服务器上运行jfrog artifactory。它与源代码的宿主位置完全无关,因此在任何情况下都不需要从github迁移。

相关问题