Files
Idea-Plugin/build.gradle.kts
T
2026-05-08 17:14:51 +08:00

101 lines
3.6 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import org.jetbrains.intellij.tasks.RunIdeTask
plugins {
java
kotlin("jvm") version "1.9.24"
id("org.jetbrains.intellij") version "1.17.4"
}
group = "com.huangzj"
version = "0.1.0"
repositories {
// 国内镜像,失败再走中央仓库
maven { url = uri("https://maven.aliyun.com/repository/public") }
mavenCentral()
}
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
dependencies {
implementation("com.google.code.gson:gson:2.10.1")
implementation("com.mysql:mysql-connector-j:8.3.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
testImplementation("junit:junit:4.13.2")
}
// 国内网络下 JetBrains 依赖经 cache-redirector 会跳到 CloudFront,常出现 UnknownHostException。
// 优先使用本机已安装的 IDEA(与开发/沙箱一致,且无需下载 ideaIU)。
val ideaLocalPath: String? =
(project.findProperty("ideaLocalPath") as String?)?.trim()?.takeIf { it.isNotEmpty() }
?: System.getenv("IDEA_LOCAL_PATH")?.trim()?.takeIf { it.isNotEmpty() }
intellij {
if (ideaLocalPath != null) {
localPath.set(file(ideaLocalPath).absolutePath)
} else {
// 未配置 ideaLocalPath 时仍尝试在线解析(需能访问 JetBrains CDN
version.set("2023.3")
type.set("IU")
}
plugins.set(listOf("com.intellij.java"))
// instrumentCode 会从 Maven 拉取插桩编译器类路径;离线/代理异常时出现 Connection refused。
// 关闭后跳过 :instrumentCode(无 GUI Designer .form、一般插件可接受;若需插桩再改为 true 并保证网络可达)
instrumentCode.set(false)
}
tasks {
// 避免 :buildSearchableOptions 拉起 IDE 时 JDK/JBR 不一致触发 Font2D 等错误(intellij {} 无此属性,须禁用 Task
named("buildSearchableOptions") {
enabled = false
}
/** 删除 runIde 沙箱。非正常退出易导致 VFS/option 损坏,进而出现 GradleJvmSupportMatrix、JavaVersion.parse 等启动异常。 */
register<Delete>("cleanIdeaSandbox") {
group = "intellij"
description =
"删除 build/idea-sandbox。出现 VFS 警告、GradleJvmSupportMatrix / IllegalArgumentException: 25 等可先执行本任务再 runIde"
delete(layout.buildDirectory.dir("idea-sandbox"))
}
patchPluginXml {
sinceBuild.set("233")
untilBuild.set("243.*")
}
withType<JavaCompile> {
options.encoding = "UTF-8"
}
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "17"
}
}
// RunIdeBase 用 projectExecutable 启动进程,设置 JavaExec.executable 无效;无 jbr 时会退回 Gradle JDK(如 ms-17)。
// 勿再加 -XX:+UseParallelGC:与 idea.vmoptions 里的 G1 叠加会报 Multiple garbage collectors selected。
named<RunIdeTask>("runIde") {
if (project.hasProperty("freshSandbox")) {
dependsOn("cleanIdeaSandbox")
}
val jbrJava = ideaLocalPath?.let { root ->
val base = file(root)
sequenceOf(
base.resolve("jbr/bin/java.exe"),
base.resolve("jbr/bin/java"),
).firstOrNull { it.isFile }
}
if (jbrJava != null) {
projectExecutable.set(jbrJava.absolutePath)
}
val maxHeap = (project.findProperty("runIdeMaxHeap") as String?)?.trim()?.takeIf { it.isNotEmpty() } ?: "2048m"
maxHeapSize = maxHeap
minHeapSize = "256m"
jvmArgs("-XX:ReservedCodeCacheSize=256m")
}
}