如何将 git 存储库中的 jar 文件添加为 gradle 中的依赖项?

Posted

技术标签:

【中文标题】如何将 git 存储库中的 jar 文件添加为 gradle 中的依赖项?【英文标题】:How to add a jar file that is in a git repository as a dependency in gradle? 【发布时间】:2019-05-18 17:53:08 【问题描述】:

我有 2 个项目,我正在将项目 1 的一些类文件作为 jar 文件发布到 bitbucket。现在我需要以某种方式将该 jar 文件作为依赖项包含在项目 2 中。这是项目 1 build.gradle 中的发布代码(我使用的是 gradle-git-publish 库 gradle 插件):

task myJar(type: Jar) 
    manifest 
        attributes 'Implementation-Title': 'My Jar',
            'Implementation-Version': '1.0.0'
    
    baseName = "my-project"
    from sourceSets.main.output
    include 'com/my/project/deep/nested/files/*.class'
    eachFile  FileCopyDetails file -> file.setPath('com/my/project/files/' + file.getName()) 
    includeEmptyDirs = false
    with jar


gitPublish 
    repoUri = 'git@bitbucket.org:myusername/my-repo.git'

    branch = 'master'

    contents 
        from 'build/libs'
    

    commitMessage = 'Latest commit'


gitPublishPush.dependsOn myJar

这是迄今为止我在项目 2 中尝试将 jar 添加为依赖项的一些方法。

repositories 
    mavenCentral()

    maven 
        url 'https://bitbucket.org/myusername/my-project/src/master/'
        artifactUrls 'https://bitbucket.org/myusername/my-project/src/master/'

    

    ivy 
        url "https://bitbucket.org/myusername/my-project/src/master"
        layout 'pattern' , 
            artifact 'my-project-0.0.1-SNAPSHOT.jar'
        
    


dependencies 
    implementation 'com.my.project:my-project:0.0.1-SNAPSHOT'

Gradle build 报告它正在下载 jar 文件,但在 build 之后它仍然是“无法解析 com.my.project:my-project:0.0.1-SNAPSHOT”。您对如何解决此问题有任何想法,还是我用错误的解决方案来解决整个问题?

【问题讨论】:

【参考方案1】:

感谢您的提问:) 在我看来,您的项目联系得太紧密了。 我建议您在项目 1 中构建您的 jar 文件,然后将其提交到项目 2,其中包含一条消息,其中包含该 jar 来自的项目 1 的提交哈希。 当您需要发现问题时,这将使事情变得更容易管理,同时也消除了跨 git 项目任务的必要性,例如您上面描述的任务。而且,您的 git 项目保持独立。

考虑在机器上不存在项目 1 或硬编码 URL 中不再可用时尝试构建项目 2 的人为错误,这会破坏事情。 如果您有任何其他问题,请告诉我。

【讨论】:

以上是关于如何将 git 存储库中的 jar 文件添加为 gradle 中的依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

限制 git 存储库中的文件大小

git将上游设置为存储库中的远程文件夹

如何从 Git 存储库中删除文件?

如何从 Git 存储库中删除文件?

保护 git 存储库中的文件

如何将文件从一个文件夹移动到同一git存储库中的另一个文件夹保留历史记录[重复]