java - 覆盖 ~/.gradle/init.gradle 存储库位置
问题描述
有没有办法更改项目 build.gradle 中默认存储库的位置?我正在使用公司 PC,它有一个~/.gradle/init.gradle
全局指定默认 gradle 存储库的文件,例如:
allProjects {
buildscript {
repositories {
mavenLocal()
maven { url "<company url>"}
}
}
repositories {
mavenLocal()
maven { url "< company repo url>"}
}
}
我只能在公司网络上访问它,这意味着对于任何辅助项目,如果我不登录,构建就会失败。有没有办法可以在项目中覆盖这个 repo 以指向不同的(公共)repo?我尝试了各种方法,例如将项目 build.gradle
更改为:
repositories {
maven {
url "https://maven.springframwork.org/release"
}
}
但它仍然试图指向公司回购并未能解决它。
解决方案
如果您需要为依赖项添加一些存储库 - 您可以在build.gradle
. 如果您想仅针对特定项目覆盖在全局初始化脚本中定义的 Gradle 插件存储库,您需要:
- 创建一个 init 脚本,该脚本将
init.gradle
在USER_HOME/.gradle/
目录中执行(例如,init.gradle.kts
在USER_HOME/.gradle/init.d/
目录中) - 使用 some
if
-condition 指定哪些项目将被此覆盖覆盖(例如,在某些特定文件夹中)。Gradle 脚本不仅是 DSL,您还可以使用图灵完备的 Groovy/Kotlin 的所有功能。
我将在这里使用 Kotlin(可能它也是一个有效的 Groovy 代码):
settingsEvaluated {
if (rootProject.projectDir.toString().startsWith("path/to/my/side/projects/folder")) {
pluginManagement {
repositories {
gradlePluginPortal()
mavenLocal()
}
}
}
}
推荐阅读
- python - 如何在python中的组内计算两点之间的距离,对于许多结果点
- reactjs - history.push 是否应该渲染与路由关联的组件?
- mongodb - NFS 卷上带有 PVC 的 mongodb 以“文件重命名:重命名:权限被拒绝”重新启动
- wso2 - 错误 Axis2Sender 发送消息时出现意外错误 org.apache.axis2.AxisFault:Payload 无法写入 JSON
- sql - AVG(x) - 1 给了我们什么?
- ios - didReceiveRemoteNotification 在单击通知(背景)时不工作,但在应用程序为前台时工作
- c - 如何在c中创建信号量?
- java - 按用户定义的字段集查找重复对象
- php - preg_replace 和 regexp 获取域
- reactjs - 使用 react-redux 时如何高效设计组件/配置 store