如何从maven应用gradle插件

ttvkxqim  于 2023-10-19  发布在  Maven
关注(0)|答案(1)|浏览(155)

我正在学习使用gradle(使用Kotlin)。
我发现从模板创建一个gradle插件很容易。
但我还是不明白。我有两个问题:
1.我发布的插件正确吗?
1.如何使用这个插件?
我是这么做的:
这里是一些创造的历史

gradle init
Couldn't get final path for handle 0x11a0, error code: 2

> Task :wrapper
Caught exception: Couldn't resolve final path of, error = 2: Z:\

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 4

Select implementation language:
  1: Groovy
  2: Java
  3: Kotlin
Enter selection (default: Java) [1..3] 3

Select build script DSL:
  1: Kotlin
  2: Groovy
Enter selection (default: Kotlin) [1..2] 1

Project name (default: asd): asd
Source package (default: asd): com.asd
......
BUILD SUCCESSFUL in 18s

完成这些操作后,就生成了helloworld插件

package com.asd
class AsdPlugin: Plugin<Project> {
    override fun apply(project: Project) {
        // Register a task
        project.tasks.register("greeting") { task ->
            task.doLast {
                println("Hello from plugin 'com.asd.greeting'")
            }
        }
    }
}

build.gradle.kts比例:

gradlePlugin {
    // Define the plugin
    val greeting by plugins.creating {
        id = "com.asd.greeting"
        implementationClass = "com.asd.AsdPlugin"
    }
}

所以,我把maven-publish添加到这个文件中。从gradle文档复制了某些部分。并成功发布到我的本地maven(由docker创建)。(我只是在IDEA右边的docker中双击publish,可能和./gradlew publish一样)

group = "aaa.bbb"
version = "1.4"

publishing {
    publications {
        create<MavenPublication>("myLibrary") {
            from(components["java"])
        }
    }

    repositories {
        maven {
            credentials {
                username = "admin"
                password = "123456"
            }
            url = uri("http://localhost:8081/repository/hellomaven/")
            isAllowInsecureProtocol = true
        }
    }
}

现在我如何在另一个项目中应用此插件?

plugins {
    kotlin("jvm") version "1.9.0"
    
    id("What is the id of the plugin above?")
}

repositories {
    mavenCentral()
    maven {
        credentials {
            username = "admin"
            password = "123456"
        }
        url = uri("http://localhost:8081/repository/hellomaven/")
        isAllowInsecureProtocol = true
    }
}

dependencies {
   implementation("aaa.bbb:plugin:1.4") // should I implement this ?
}
ddrv8njm

ddrv8njm1#

插件的ID是您在gradlePlugin { }中指定的。在本例中,您将ID指定为com.asd.greeting。您还将插件版本定义为1.4。因此,这使您的插件应用程序成为:

// build.gradle.kts
plugins {
    id("com.asd.greeting") version "1.4"
}

但是,由于这不会发布到Maven存储库(如Gradle插件门户或Maven Central),因此您需要配置Gradle构建以包含您发布插件的位置。在本例中,它似乎是本地托管的Maven存储库http://localhost:8081/repository/hellomaven/。这可以在设置中配置:

// settings.gradle.kts
pluginManagement {
    repositories {
        maven {
            url = uri("http://localhost:8081/repository/hellomaven/")
        }
        gradlePluginPortal()
    }
}

您可以在这里看到,我定义了一个Maven存储库,其中的位置是您发布到的URL。我还配置使用Gradle插件门户,因为Gradle将查看所有存储库以查找插件。

相关问题