gradle插件开发、发布、调试_gradle buildscript

gradle插件开发、发布、调试_gradle buildscript

经验文章nimo972025-02-19 11:26:3612A+A-

【环境搭建】

1、电脑ubuntu之前已经安装了jdk,设置环境变量;安装了maven也设置了环境变量;

2、下载gradle,修改配置(
/home/xxx/gradle-8.5/init.d/init.gradle)

allprojects {
  repositories {
    mavenLocal()

    maven { url 'https://abc/artifactory/maven-snapshot-virtual'}
    maven { url 'https://abc/artifactory/maven-release-virtual'}
    maven { url 'https://abc/artifactory/maven-remote-virtual/' }
    mavenCentral()
  }
}

3、设置gradle环境变量;

#gradle

export GRADLE_HOME=/home/xxx/gradle-8.5

export PATH=$GRADLE_HOME/bin:$PATH

【开发】

IDEA创建gradle项目,修改build.gradle

plugins {
    id 'java'
    id 'java-library'
    id 'java-gradle-plugin'
    id 'maven-publish'
}

group = 'xxx.yyy'
version = '1.0-jdk21-SNAPSHOT'

//拉包信息设置
repositories {
    repositories {
        mavenLocal()
        mavenCentral()
    }
}

// 发布远程仓库信息设置
publishing {
    publications {
        myLibrary(MavenPublication) {
            from components.java
        }
    }

    //仓库配置
    repositories {
        mavenLocal()
        maven {
            url 'https://abc/artifactory/maven-snapshot-virtual'
            credentials {
                username = 'user'
                password = 'aaaa'
            }
        }
    }
}

//插件元数据
gradlePlugin {
    plugins {
        myPlugin {
            id = '插件ID'
            implementationClass = '插件的实现类,比如下面代码的类codecheck.gradle.plugin.CodeCheckPlugin'
        }
    }
}

dependencies {
   //插件依赖项
    implementation gradleApi()
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
    useJUnitPlatform()
}

//java版本设置
java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}
代码:
package codecheck.gradle.plugin;

import org.apache.commons.lang3.StringUtils;
import org.gradle.api.Plugin;
import org.gradle.api.Project;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class CodeCheckPlugin implements Plugin {

    @Override
    public void apply(Project project) {
        project.getTasks().register("codeCheck", task -> {
            project.getLogger().info("=============================begin codecheck=============================");
            File file = project.getProjectDir();
            project.getLogger().info("=============================end codecheck=============================");
            throw new RuntimeException("抛异常阻断执行");
        });

    }
}

IDEA点击publishToMavenLocal可以把插件包发布到本地maven仓库,点击publish可以发布到远程仓库;

【插件使用】

在使用插件的gradle项目里面设置:

1、项目根目录文件settings.gradle.kts修改,第一行加下文:

pluginManagement {
    repositories {
        mavenLocal()
        maven ( url = "https://abc/artifactory/maven-snapshot-virtual")
        mavenCentral()
    }
}

2、build.gradle.kts修改,如下面:

plugins {
    id("java")
    id("上面的插件ID") version ("1.0-jdk21-SNAPSHOT")
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {

}

3、如果插件需要jvm参数,在根目录gradle.properties文件加jvm参数,参数"org.gradle.jvmargs"需要是全小写;

org.gradle.jvmargs=--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED

【插件调试】

1、在引入插件的项目里面执行命令:

gradle --no-daemon checkGradleDependencies -Dorg.gradle.debug=true

2、插件源码项目,开启远程调试,监听端口5005,打断点调试;

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7