gradle - 尝试应用到其他项目时找不到独立的Kotlin Gradle插件

标签 gradle kotlin gradle-plugin

我正在尝试为Gradle创建一个自定义的独立Kotlin插件,并试图将其应用于另一个项目,但是在尝试将其应用于另一个项目时却遇到了Plugin with id 'my.id.license-tools' not found错误。

这是插件项目的结构:

license-tools
+--src
   +--main
   |  +--java
   |  |
   |  +--kotlin
   |  |  +--my.id
   |  |     +--LicenseTools.kt
   |  |
   |  +--resources
   |     +--META-INF.gradle-plugins
   |        +--my.id.license-tools.properties
   +--test
   +--build.gradle

这是我的build.gradle文件:
buildscript {
    ext.kotlin_version = '1.2.21'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'my.id'
version '0.1'

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'idea'
apply plugin: 'maven'


sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile gradleApi()
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

然后,我们有了Plugin类LicenseTools.kt,我已经对其进行了非常简单的确定,以确保错误不是从那里来的:
package my.id

import org.gradle.api.Plugin
import org.gradle.api.Project

open class LicenseTools: Plugin<Project> {
    override fun apply(project: Project?) {
        println("License-Tools plugin has been applied")
    }
}

最后my.id.license-tools.properties:
implementation-class=my.id.LicenseToolsKt

我也尝试过
implementation-class=my.id.LicenseTools

在使用./gradlew clean build构建所有内容之后,我已经运行./gradlew install将整个程序安装到本地Maven存储库中,并成功完成了安装。

然后,我继续将以下内容添加到另一个项目的buildscript块中:
repositories {
    mavenLocal()
    mavenCentral()
}
dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "my.id:license-tools:0.1"
}

然后添加
apply plugin: 'my.id.license-tools'

在尝试了许多不同的东西之后,例如更改为新的插件块或确保将 Artifact 正确安装到本地maven存储库后,我找不到问题的根源,因为根据我已阅读的许多指南,这应该是制作独立插件的正确方法。

最佳答案

您可能现在已经知道了,但是您的my.id.license-tools.properties应该命名为my.id.properties
内容应为implementation-class=my.id.LicenseTools
然后应该将类路径命名为classpath "my.id:license-tools:0.1"-> classpath "my.id:LicenseTools:0.1"
apply plugin: 'my.id.license-tools'-> apply plugin: 'my.id.LicenseTools'
因此它始终是:

  • 软件包:my.id
  • 名称:LicenseTools

  • 我实际上还没有测试所有这些。

    关于gradle - 尝试应用到其他项目时找不到独立的Kotlin Gradle插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944250/

    相关文章:

    android - Eclipse - Gradle - Android SDK(未能针对 android-22 : . ...)

    java - 使用 AsyncTask 编辑 Fragment UI 项目

    android - Gradle Build因Android Studio异常而失败

    Android 构建 gradle - 替换字符串资源值

    Android Studio 和 Gradle - 构建失败

    android - 任何 android Studio 版本 > 3.2.1 显示红色资源但仍可编译

    gradle - AEM Gradle OSGI 插件

    android - 观察一个 MutableLiveData 列表

    android - Unresolved reference : findViewById in Kotlin

    spring-boot - 从子项目中提取插件重复项到root gradle配置