注意: 功能通用化,涉及个人及集体隐私的文件切勿上传!
WorkTools 是一个基于 JavaFX 的桌面应用框架,采用 Gradle 多模块架构。
- JDK: 17
- Kotlin: 1.9.0
- JavaFX: 21.0.3
- 构建工具: Gradle (Kotlin DSL)
worktools/
├── platform/ # 核心平台模块(必选)
│ ├── 提供基础 API、UI 组件
│ ├── 插件系统
│ └── 公共依赖
├── modules/ # 功能模块(可选)
│ ├── boot-launcher/ # 启动器
│ ├── boot-website/ # 常用网站快捷启动
│ ├── recent-touch/ # 最近访问文件
│ ├── stock-monitor/ # 股票监控
│ └── windows-util/ # Windows 工具集
└── assets/ # 资源文件
./gradlew run打包完整应用(包含 JRE):
./gradlew packageMyApp打包结果位于 build/launch/ 目录下。
- 在
modules/目录下创建新文件夹(如my-module) - 创建
build.gradle.kts文件:
plugins {
id("org.jetbrains.kotlin.jvm")
id("org.openjfx.javafxplugin")
}
dependencies {
// 自动引入 platform 模块
}- 在根目录
build.gradle.kts中的selectedModules列表添加模块:
val selectedModules = listOf(
// ... 已有模块
":modules:my-module",
)功能模块自动依赖 platform 模块,可直接使用平台提供的 API:
// 创建工具面板
class MyToolPanel : VBox() {
init {
// 使用 platform 提供的组件
}
}在插件项目 resources/META-INF/ 目录下创建 plugin.yml:
version: 1.0.0
id: indi.myplugin.example
name: 示例插件
extensions:
io.github.nonoas.worktools.platform.ext.FuncPaneFactory:
- indi.myplugin.MyToolPanel配置说明:
version: 插件版本号id: 插件唯一标识符(全限定名格式)name: 插件显示名称extensions: 扩展点注册,key 为扩展点接口全限定名,value 为实现类列表
实现 FuncPaneFactory 接口创建功能面板:
class MyToolPanel : FuncPaneFactory {
override fun getPane(): Pane {
return VBox().apply {
// 自定义面板内容
}
}
override fun getName(): String {
return "我的工具"
}
}# 插件单独打包(不包含 platform)
./gradlew jar
# 将插件 jar 放入主程序 plugins/ 目录jfxVersion=21.0.3 # JavaFX 版本
kotlinVersion=1.9.0 # Kotlin 版本
myMainClassName=io.github.nonoas.worktools.platform.MainKt # 主类
platformName=platform # 平台模块名称
appVersion=1.3.3-SNAPSHOT # 主应用版本
platformVersion=1.0.0-SNAPSHOT # platform 发布版本| 命令 | 说明 |
|---|---|
./gradlew run |
运行应用 |
./gradlew build |
构建所有模块 |
./gradlew packageMyApp |
打包完整应用 |
./gradlew :platform:publishToMavenLocal |
发布 platform 到本地 Maven |
./gradlew -PpublishPlatform=true publishToSonatype |
独立发布 platform SNAPSHOT 到 Sonatype Central |
./gradlew -PpublishPlatform=true publishToSonatype closeAndReleaseSonatypeStagingRepository |
独立发布 platform 正式版到 Sonatype Central |
./gradlew -PpublishPlatform=true :platform:publishPlatformReleaseToSonatype |
等价的一键正式版发布命令 |