对于一个项目,我需要从一个仅在客户网络上可用的存储库中获取一个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继续查看其他回购协议,即使其中一个回购协议不可用,或者是否有其他方法可以替代不可用的回购协议?
1条答案
按热度按时间uz75evzq1#
尝试这样做,在本地构建时,在
gradle.properties
中添加一个localRepo
这样的标志,然后就可以在repositories
块中使用if
语句,请参见下面的示例:这可确保项目可在系统之间移植