当前位置: 首页 > 知识库问答 >
问题:

gradle插件库怎么改?

岳泳
2023-03-14

我在一家大公司工作,有严格的政策,禁止未经过滤地使用外部图书馆。我们必须从祝福的企业存储库中提取所有内容,而不是从裸露的互联网中提取所有内容,包括 gradle.org。

使用gradle最初的apply-plugin语法,结合buildscript块,我可以将插件添加到我们的repo中,并在构建中使用它们。换句话说:

buildscript {
    repositories {
        maven { url "https://privaterepo.myemployer.com" }
    }

    dependencies {
        // various dependencies
        classpath "org.something:some-plugin:1.0"
        ...
    }

apply plugin: "someplugin"

相反,我希望能够使用新的插件DSL,即

plugins {
    id 'org.something.some-plugin' version '1.0'
}

(我意识到需要在某个地方定义私有回购url)

新的插件语法总是gradle.org,似乎没有任何方法来提供备用下载网址。有人知道方法吗?

我仔细看了留档和网上都找不到答案。如果答案完全显而易见,我很抱歉。

非常感谢!

共有3个答案

杜曜灿
2023-03-14

要全局应用该设置,可以将其添加到USER_HOME/.gradle/init。级配如下:

allprojects {       
    repositories {
        mavenLocal()
        maven { url "https://artifactory.mycompany.com/artifactory/maven-repo" }
    }       
}   

settingsEvaluated { settings ->
    settings.pluginManagement {
        repositories {
            mavenLocal()
            maven { url "https://artifactory.mycompany.com/artifactory/maven-repo" }
        }
    }
}
姬坚成
2023-03-14

自Gradle的最新版本以来,插件语法发生了一些变化,现在Gradle 4.x的正确语法是:

pluginManagement {
  repositories {
      maven {
        url 'maven-repo'
      }
      gradlePluginPortal()
      ivy {
        url 'ivy-repo'
      }
  }
}

因此,例如,此设置.gradle 将使用您的内部 Nexus 镜像:

pluginManagement {
  repositories {
    maven {
      url 'https://internal.repo.corporate/repository/gradle-proxy/'
    }
  }
}

rootProject.name = 'My Project Name'

更多信息可以在Gradle插件留档中找到。

赫连睿
2023-03-14

Gradle 3.5有一个新的(孵化)功能,允许使用pluginManagementDSL更好地控制插件依赖项解决方案

插件解析规则允许您修改在< code>plugins {}块中提出的插件请求,例如更改请求的版本或显式指定实现工件坐标。

要添加解析规则,请使用pluginManagement{}块中的resolutionStrategy{}

例27.6。插件解析策略。

settings.gradle
pluginManagement {
  resolutionStrategy {
      eachPlugin {
          if (requested.id.namespace == 'org.gradle.sample') {
              useModule('org.gradle.sample:sample-plugins:1.0.0')
          }
      }
  }
  repositories {
      maven {
        url 'maven-repo'
      }
      gradlePluginPortal()
      ivy {
        url 'ivy-repo'
      }
  }
}

这告诉Gradle使用指定的插件实现工件,而不是使用其从插件ID到Maven/Ivy坐标的内置默认映射。

< code>pluginManagement {}块只能出现在settings.gradle文件中,并且必须是该文件中的第一个块。除了实际实现插件的构件之外,定制Maven和Ivy插件库必须包含插件标记构件。

插件管理中的存储库块的工作方式与以前版本中的插件存储库块相同。

在 Gradle 3.5 之前,您必须在设置.gradle 中定义插件存储库块,如 sytolk 的答案中所述:

pluginRepositories{}块只能出现在设置中。gradle文件,并且必须是文件中的第一个块。

pluginRepositories {
  maven {
    url 'maven-repo'
  }
  gradlePluginPortal()
  ivy {
    url 'ivy-repo'
  }
}
 类似资料:
  • 主要内容:插件类型,应用插件,编写自定义插件,从构建获取输入,标准Gradle插件插件只是一组任务,几乎所有的任务,如编译任务,设置域对象,设置源文件等都由插件处理。 插件类型 Gradle中有两种类型的插件:脚本插件和二进制插件。 脚本插件是一个额外的构建脚本,它提供了一种声明性方法来操作构建,通常在构建中使用。 二进制插件是实现插件接口并采用编程方法来操作构建的类。二进制插件可以驻留在插件JAR中的一个构建脚本和项目层次结构或外部。 应用插件 Project.apply()

  • 怎么自建uniapp 组件库? 使用 vite 和vue3

  • 本文向大家介绍怎么在vue中使用插件?相关面试题,主要包含被问及怎么在vue中使用插件?时的应答技巧和注意事项,需要的朋友参考一下 建议有时候不要直接使用第三方插件, 而是经过自己的封装. 要不然改起来, 就要跳楼

  • 我正在尝试运行我的项目,它运行没有任何问题,但在我更新Android Studio后…我有一个错误,我不知道我使用了哪个android studio版本之前,更新降级到它。 Android Gradle插件只支持Kotlin Gradle插件1.3.0及更高版本。以下依赖项不满足所需版本:项目':assets_audio_player'->org.jetbrains.kotlin:kotlin-g

  • 我是新的Gradle,但需要建立一个开源项目,使用它,从我的机器上的公司网络。该项目最近转移到静态编程语言DSL,因此需要一些插件。 我需要使用我们的corporate Nexus服务器获取插件依赖项,我希望全局设置,因为我不想修改在所有项目中(我已经尝试过了,而且效果很好) 如果我想在全球范围内这样做,我从https://docs.gradle.org/current/userguide/plu

  • 我不明白gradle插件块 和其他一个: 在第一个块中,我们有一些插件名称。在第二个一个包和版本。我不明白应该在哪里使用第一个块,什么时候使用第二个块。