插件开发
→ 返回构建工具
Maven 插件开发
Maven 插件本质是一组 Mojo(Maven plain Old Java Object),每个 Mojo 对应一个 Goal。
pom.xml 关键配置
<packaging>maven-plugin</packaging>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.9.0</version>
<scope>provided</scope>
</dependency>
</dependencies>编写 Mojo
@Mojo(name = "greet", defaultPhase = LifecyclePhase.COMPILE)
public class GreetMojo extends AbstractMojo {
@Parameter(property = "greet.name", defaultValue = "World")
private String name;
@Override
public void execute() throws MojoExecutionException {
getLog().info("Hello, " + name + "!");
}
}使用插件
<build>
<plugins>
<plugin>
<groupId>com.example</groupId>
<artifactId>my-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<name>Claude</name>
</configuration>
</plugin>
</plugins>
</build>Gradle 插件开发
脚本插件(最简单)
抽取到独立 .gradle.kts 文件,通过 apply from 引用:
// greeting.gradle.kts
tasks.register("greet") {
doLast { println("Hello, World!") }
}// build.gradle.kts
apply(from = "greeting.gradle.kts")buildSrc 插件(多模块内复用)
→ 查看多模块项目
buildSrc/
├── build.gradle.kts
└── src/main/kotlin/com/example/GreetPlugin.kt
class GreetPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.tasks.register("greet") {
doLast { println("Hello from plugin!") }
}
}
}独立插件(发布到 Gradle Plugin Portal)
plugins {
`java-gradle-plugin`
`maven-publish`
}
gradlePlugin {
plugins {
create("greetPlugin") {
id = "com.example.greet"
implementationClass = "com.example.GreetPlugin"
}
}
}