【环境搭建】
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,打断点调试;