覆盖 ~/.gradle/init.gradle 存储库位置

Override ~/.gradle/init.gradle repository location

有没有办法更改项目中默认存储库的位置build.gradle?我使用的公司 PC 有一个 ~/.gradle/init.gradle 文件,该文件全局指定默认的 gradle 存储库,例如:

allProjects {
  buildscript {
    repositories {
       mavenLocal()
       maven { url "<company url>"}
    }
  } 
  repositories {
    mavenLocal()
    maven { url "< company repo url>"}
  }
}

我只能在公司网络上访问它,这意味着对于任何副项目,如果我不登录,构建就会失败。有没有一种方法可以覆盖项目中的这个 repo 以指向不同的 (public) repo?我尝试了各种方法,例如将 project build.gradle 更改为:

repositories {
  maven {
    url "https://maven.springframwork.org/release"
  }
}

但它仍然试图指向公司 repo,但未能解决。

如果您需要为依赖项添加一些存储库 - 您可以直接在 build.gradle 中进行。 如果你想覆盖 Gradle 插件存储库,在全局初始化脚本中定义,仅为特定项目,你需要:

  1. 创建初始化脚本,which would be executed after init.gradleUSER_HOME/.gradle/ 目录中(例如,init.gradle.ktsUSER_HOME/.gradle/init.d/ 目录中)
  2. 使用一些 if 条件来指定此覆盖将覆盖哪些项目(例如,在某些特定文件夹中)。 Gradle 脚本不仅是 DSL,您还可以使用图灵完备的所有功能 Groovy/Kotlin。

我将在这里使用 Kotlin(可能也是有效的 Groovy 代码):

settingsEvaluated {
    if (rootProject.projectDir.toString().startsWith("path/to/my/side/projects/folder")) {
        pluginManagement {
            repositories {
                gradlePluginPortal()
                mavenLocal()
            }
        }
    }
}