如何在Gradle中替换本地不可用的存储库?

bvjxkvbb  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(150)

对于一个项目,我需要从一个仅在客户网络上可用的存储库中获取一个JAR。由于这在公共存储库中不可用,并且我在本地没有访问客户网络的权限,我想在本地替换此存储库。
我将jar复制到一个本地存储库中,并使用以下语句声明它:

maven {
    url = uri("${project.getRootDir()}/local_repo")
}

这样做很好,但是我希望无论是在本地还是在客户系统上运行它,构建文件和逻辑都保持不变。
根据Gradle Docs存储库的调用顺序,我首先声明MavenCentral,然后是customers存储库(本地不可用),最后是我自己的本地替代存储库:

mavenCentral()
maven {
    url = uri(<customer_repo>)
}
maven {
    url = uri("${project.getRootDir()}/local_repo")
}

但现在,当gradle无法访问不可用的存储库时,它似乎会停止,因此无法在本地存储库中找到JAR。如果我将本地和不可用的存储库转换过来,它会再次工作,但这样一来,即使在客户系统上,它也会根据gradle文档始终使用本地存储库。
是否有一种方法可以告诉Gradle继续查看其他回购协议,即使其中一个回购协议不可用,或者是否有其他方法可以替代不可用的回购协议?

uz75evzq

uz75evzq1#

尝试这样做,在本地构建时,在gradle.properties中添加一个localRepo这样的标志,然后就可以在repositories块中使用if语句,请参见下面的示例:

repositories {
    mavenCentral()
    if( project.hasProperty('localRepo') ) {
        maven { url = uri("${project.getRootDir()}/local_repo") }
    } else {
        maven { url = uri(<customer_repo>) }
    }
}

这可确保项目可在系统之间移植

相关问题