gpt4 book ai didi

具有自定义组 ID 的 Gradle 插件

转载 作者:行者123 更新时间:2023-12-02 19:34:11 25 4
gpt4 key购买 nike

Gradle 6.1

我在 Gradle 中使用新的插件配置模式和来自自定义存储库的自定义插件时遇到困难。

buildscript {
repositories {
maven {
url = uri("https://custom")
}
mavenCentral()
jcenter()
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
}

plugins {
java
idea
id("com.custom.gradle.plugin.myplugin") version "1.1.0"
}

我收到此错误:

Plugin [id: 'com.custom.gradle.plugin.myplugin', version: '1.1.0'] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.custom.gradle.plugin.myplugin:com.custom.gradle.plugin.myplugin:1.1.0')
Searched in the following repositories:
Gradle Central Plugin Repository

Gradle 将使用插件 ID 作为其组 ID。

如果我使用旧方法,它会起作用:

buildscript {
repositories {
maven {
url = uri("https://custom")
}
mavenCentral()
jcenter()
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath("com.custom:com.custom.gradle.plugin.myplugin:1.1.0")
}
}

apply(plugin = "com.custom.gradle.plugin.myplugin")

有没有办法用“id”命令指定组 ID?或者我是否违反了插件定义与旧插件的契约(Contract)?

最佳答案

为了使用更新/首选的 plugins { } DSL,自定义插件必须发布 plugin marker artifact .

如果可以修改自定义插件,那么我建议更新以使用 Java Gradle Plugin Development plugin这将为您创建标记。

如果插件无法更新,那么您仍然可以使用 plugins { } block ,但您需要手动解析插件:

在主build.gradle中:

plugins {
id("com.custom.gradle.plugin.myplugin") version "1.1.0"
}

然后在settings.gradle中手动解析插件:

pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.id == "com.custom.gradle.plugin.myplugin") {
useModule("com.custom:com.custom.gradle.plugin.myplugin:${requested.version}")
}
}
}
}

参见Plugin Resolution Rules了解更多详情。

关于具有自定义组 ID 的 Gradle 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60031747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com