首页 > 解决方案 > 覆盖 ~/.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"
  }
}

但它仍然试图指向公司回购并未能解决它。

标签: javakotlingradlejvm

解决方案


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

  1. 创建一个 init 脚本,该脚本将 init.gradleUSER_HOME/.gradle/目录中执行(例如,init.gradle.ktsUSER_HOME/.gradle/init.d/目录中)
  2. 使用 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()
            }
        }
    }
}

推荐阅读