java 如何配置Gradle连接到Github库源代码的仓库?

zhte4eai  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(210)

我有一个build.gradle.kts文件,其中包含以下代码:

plugins {
    kotlin("jvm") version "1.8.0"
    application
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.apache.poi:poi-ooxml:5.2.0")
    implementation("org.apache.poi:poi:5.2.0")
    implementation("com.vortexa.refinery:refinery:master.161")
}

}

但我得到一个错误:untitled:main: Could not find com.vortexa.refinery:refinery:master.161 .我可以克隆仓库(https://github.com/VorTECHsa/refinery)并以某种方式连接它吗?

mspsb9vt

mspsb9vt1#

我以前从未见过这种情况,但这个库是非常规的,因为他们没有将其发布到Maven Central或故意使其可由JitPack构建。相反,它只发布到GitHub Packages。这使得这成为一个很大的麻烦,因为GitHub要求您进行身份验证,即使只是读取公共存储库。
我认为它应该和JitPack一起工作,因为JitPack上的这个仓库的页面显示它是一个成功的构建。它只是没有对应于发布版本的最后提交的正确版本号。JitPack不是库作者发布的东西,所以它可能没有组ID,工件ID,JitPack使用基于GitHub地址的组名按需自动构建项目。
所以,用Jitpack来做这件事,这是更简单的方法:
build.gradle文件的repositories块中添加这个额外的Maven存储库的信息:

repositories {
    mavenCentral()

    maven { url 'https://jitpack.io' }
}

并更改您的实现行以使用这个库的JitPack版本:

implementation("com.github.VorTECHsa:refinery:0691ce7404")

在这里,版本号是与他们最后一次发布日期相对应的提交号。它不是由JitPack构建的,直到刚才我在他们的网站上点击它请求它。看起来它是成功的,所以这应该可以工作。
用GitHub包来实现这一点,这是一个困难的方法,但可能更合适,因为这是库作者的意图,并且有版本号:
首先,你需要一个GitHub账户。然后你需要根据instructions here为你的账户生成一个读令牌。令牌会在一段时间后过期,所以当你的项目停止构建时,这是一个陷阱,你会忘记你必须偶尔获得一个刷新的令牌。当你创建令牌时,你只需要选中read:packages的复选框。
然后将此额外Maven资源库的信息添加到build.gradle文件中的repositories块:

repositories {
    mavenCentral()

    maven {
        name = "VorTECHsa GitHubPackages"
        url = "https://maven.pkg.github.com/VorTECHsa/refinery"
        credentials {
            username = "<your github username>"
            password = "<the token you generated>"
        }
    }
}

由于将令牌签入版本控制不是一个好主意,因此建议您将令牌放入系统变量中,然后您可以在Gradle中引用它,如下所示:

password = System.getEnv("YOUR_GITHUB_TOKEN_ENVIRONMENT_VARIABLE_KEY")

如果您不想将GitHub用户名签入版本控制,您可以对GitHub用户名执行相同的操作。

相关问题