Appearance
Java 插件详解
java 插件是 Gradle 构建 Java 项目的基础,提供编译、测试、打包等完整功能。
应用 Java 插件
kotlin
plugins {
java // 基础 Java 插件
// 或
`java-library` // 区分 api/implementation(推荐库项目使用)
// 或
application // 可执行应用程序(继承 java)
}插件提供的任务
compileJava → 编译 src/main/java
processResources → 处理 src/main/resources
classes → 编译+资源(compileJava + processResources)
compileTestJava → 编译 src/test/java
processTestResources → 处理 src/test/resources
testClasses → 测试编译+资源
test → 运行测试
jar → 打包 JAR
assemble → 所有打包任务(jar 等)
check → 所有验证任务(test 等)
build → assemble + check
clean → 删除 build/
javadoc → 生成 JavaDocJava 版本配置
kotlin
// 方式一:sourceCompatibility(简单,推荐)
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
// 方式二:Toolchain(更精确,跨 JDK 构建)
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
vendor.set(JvmVendorSpec.ADOPTIUM)
}
}编译参数
kotlin
tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
options.isDeprecation = true // 显示废弃警告
options.isWarnings = true
options.compilerArgs.addAll(listOf(
"-Xlint:all", // 所有 lint 警告
"-parameters" // 保留方法参数名(Spring 需要)
))
}完整配置示例
kotlin
plugins {
java
}
group = "com.example"
version = "1.0.0"
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
// 生成 sources JAR
withSourcesJar()
// 生成 javadoc JAR
withJavadocJar()
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.slf4j:slf4j-api:2.0.9")
runtimeOnly("ch.qos.logback:logback-classic:1.4.11")
compileOnly("org.projectlombok:lombok:1.18.30")
annotationProcessor("org.projectlombok:lombok:1.18.30")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
tasks.named<Test>("test") {
useJUnitPlatform()
maxHeapSize = "1g"
testLogging {
events("passed", "skipped", "failed")
showStandardStreams = false
}
}
tasks.named<Jar>("jar") {
manifest {
attributes(
"Main-Class" to "com.example.Main",
"Implementation-Version" to project.version
)
}
}java-library 插件(库项目专用)
kotlin
plugins {
`java-library`
}
dependencies {
// api:暴露给消费者(影响编译 classpath)
api("org.slf4j:slf4j-api:2.0.9")
// implementation:不暴露给消费者(内部使用)
implementation("ch.qos.logback:logback-classic:1.4.11")
// compileOnlyApi:仅编译时暴露
compileOnlyApi("org.jetbrains:annotations:24.0.1")
}application 插件(可执行程序)
kotlin
plugins {
application
}
application {
mainClass.set("com.example.Application")
applicationName = "my-app"
// JVM 参数
applicationDefaultJvmArgs = listOf("-Xmx512m", "-Dfile.encoding=UTF-8")
}
// 任务:
// ./gradlew run ← 直接运行
// ./gradlew distZip ← 打包发行版(含启动脚本)
// ./gradlew installDist ← 安装到 build/install/