直接从我的自定义插件配置 gradle“maven-publish”插件

Rac*_*oon 2 gradle maven-publish

我是 gradle 新手,想要创建应用maven-publish插件的自定义 gradle 插件。另外,我的插件应该配置maven-publish插件,以便另一个插件用户不应该执行任何操作。我的插件会自动配置maven-publish。我试图找到任何相同的教程,但没有找到。如何maven-publish从我的自定义插件配置 gradle 插件?

Fra*_*teo 5

从自定义插件配置其他插件非常常见。您应该能够引用任何自定义插件作为示例。具体而言maven-publish,我创建了以下示例:

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.publish.PublishingExtension;
import org.gradle.api.publish.maven.MavenPublication;
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;

import java.net.URI;

public class MyPlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        project.getPluginManager().apply(MavenPublishPlugin.class);

        project.getExtensions().configure(PublishingExtension.class, publishing -> {
            publishing.repositories(repositories -> {
                repositories.maven(maven -> {
                   maven.setUrl(URI.create("https://my-publishing-repo.com"));
                });
            });
            publishing.publications(publications -> {
                publications.create("mavenJava", MavenPublication.class, mavenJava -> {
                    mavenJava.artifact(project.getTasks().named("bootJar"));
                });
            });
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

这相当于 Gradle 构建文件 (Kotlin DSL) 中的以下内容:

plugins {
    `maven-publish`
}

publishing {
    repositories {
        maven {
            url = uri("https://my-publishing-repo.com")
        }
    }
    publications {
        create<MavenPublication>("mavenJava") {
            artifact(tasks.named("bootJar").get())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅我的指导中的以下指南: