Gradle:使用 BuildScript RepositoryHandler 作为项目存储库处理程序

标签 gradle build.gradle

我正在实现一个自定义插件,在这个插件中我提供了一个默认的存储库配置,如下所示:

class MyPlugin implements Plugin<Project> {

  ...
  ...
  ...

  @Override
  void apply(Project project) {

    project.repositories {
      mavenLocal()
      mavenCentral()
      jcenter()
    }

    ...
    ...
    ...
  }
}

但是,为了能够在构建脚本中应用我的插件,客户端代码无论如何都会在其构建脚本中添加如下部分:

buildscript {
  repositories {
      mavenLocal()
      maven { url "<organization maven repo url>" }
      mavenCentral()
  }

  dependencies {
    classpath 'com.organization.xxx:my-plugin:1.0.130'
  }
}

apply plugin: 'com.organization.my-plugin'

鉴于此,我希望能够做这样的事情:

class MyPlugin implements Plugin<Project> {

  ...
  ...
  ...

  @Override
  void apply(Project project) {

    project.repositories = project.buildscript.repositories

    ...
    ...
    ...
  }
}

但是,当我这样做时,我收到一个错误,这是可以理解的,因为 project.repositories 属性是只读的。

那么,有没有一种正确的方法可以实现我想要的目标?

最佳答案

我认为该错误是因为您试图为属性 project.repositories 赋值。幸运的是,您只需要添加存储库,所以也许这会起作用(未经测试)

@Override
void apply(Project project) {
  project.repositories.addAll(project.buildscript.repositories)
}

顺便说一句,我不确定您是否真的想这样做。更好的办法是在其他地方定义公共(public)存储库,然后添加到构建脚本和项目

关于Gradle:使用 BuildScript RepositoryHandler 作为项目存储库处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614652/

相关文章:

java - GRADLE任务运行配置

java - Gradle Jaxb 插件问题

android - Intellij无法将目录识别为测试

java - "Android Gradle plugin requires Java 11 to run"发布jitpack库时

gradle - 如何用Gradle替换log4j2.xml?

android - 我必须在 Android Studio 的子项目中添加 .aar 文件作为库。它给了我一个错误。

java - gradle同步时sun.security.validator.ValidatorException

android - Build Gradle连接超时

java - Android Studio : Unsupported major. 次要版本 52.0

android - 错误 :Execution failed for task ':app:transformClassesWithDexForDebug' . > com.android.build.api.transform.TransformException :. .非零退出值 3