如何将自定义插件发布到Maven本地,然后在另一个本地项目中使用它?

时间:2018-08-09 19:42:36

标签: java gradle plugins

我构建了一个Gradle插件,该插件在另一个Gradle项目的buildSrc下效果很好。现在,我将其移到了自己的项目中,并希望将其发布到本地Maven存储库中,以便可以在原始项目中使用(在buildSrc中不使用它)。当然,较长期的目标是将其发布给其他人。

问题是发布后,另一个项目找不到它。我可以在〜/ .m2 / repository中看到文件,它们似乎是正确的(据我所知最好)。我已经在两个项目中尝试了十几种插件ID,组ID和项目名称组合的变体,它们均导致无法在其他项目中加载插件:

  

在以下位置找不到插件[id:'update4j-gradle-plugin',版本:'0.1']   以下任何来源:

     

Gradle核心插件(不是核心插件,请参见https://docs.gradle.org/4.9/userguide/standard_plugins.html)   可用的核心插件)

     

插件存储库(无法解析插件工件'update4j-gradle-plugin:update4j-gradle-plugin.gradle.plugin:0.1')

     

在以下存储库中搜索:

     

Gradle中央插件存储库

当我去查看本地Maven仓库时,发现Plugin Marker Artifacts,它们看起来正确,但是我真的不知道。

Gradle中的插件设置和发布配置为:

group 'net.christophermerrill'
version '0.1'
gradlePlugin {
    plugins {
        update4j {
            id = 'update4j-gradle'
            implementationClass = 'net.christophermerrill.update4j.gradle.Update4jPlugin'
        }
    }
}

publishing {
    repositories {
        mavenLocal()
    }
}

该插件是从其他项目中引用的,如下所示:

id 'update4j-gradle' version '0.1'

整个项目都在GitHub:https://github.com/ChrisLMerrill/update4j-gradle-plugin上,因此您可以签出并尝试一下。构建主项目,并使用以下命令从根文件夹中发布它:

gradlew publishToMaventLocal

然后在 example 文件夹中,运行任何gradlew命令以显示问题,例如

gradlew run

1 个答案:

答案 0 :(得分:0)

答案是我所做的一切都是正确的,但是 settings.gradle 中需要一个 pluginManagement 块,以便从非标准存储库读取插件。这是对此问题的公认答案:

Why does Gradle not look in the local maven repository for plugins?