如何在Gradle中添加git存储库中的jar文件作为依赖项?

时间:2018-12-18 10:22:08

标签: git maven gradle dependencies ivy

我有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构建报告它正在下载jar文件,但是在构建之后,它仍然是“无法解析com.my.project:my-project:0.0.1-SNAPSHOT”。您是否有解决此问题的想法,或者我是否有错误的解决方案来解决整个问题?

1 个答案:

答案 0 :(得分:0)

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

考虑一下在机器上不存在项目1或硬编码URL中不再存在项目1时尝试构建项目2的人为错误,这会造成麻烦。 如果还有其他问题,请告诉我。