|
6 | 6 | <a href="https://github.com/LearnAIHubC/JLaunch/actions/workflows/ci.yml"><img src="https://github.com/LearnAIHubC/JLaunch/actions/workflows/ci.yml/badge.svg" alt="CI"></a> |
7 | 7 | <a href="https://github.com/LearnAIHubC/JLaunch/releases/latest"><img src="https://img.shields.io/github/v/release/LearnAIHubC/JLaunch?display_name=tag&sort=semver&color=4fd1a6" alt="Release"></a> |
8 | 8 | <a href="LICENSE"><img src="https://img.shields.io/github/license/LearnAIHubC/JLaunch?color=6ea8fe" alt="MIT License"></a> |
9 | | - <img src="https://img.shields.io/badge/Electron-43-47848f?logo=electron" alt="Electron 43"> |
10 | | - <img src="https://img.shields.io/badge/backend-none-65d1a8" alt="No backend"> |
11 | 9 | </p> |
12 | 10 |
|
13 | | -<p align="center"> |
14 | | - <strong>让 IDE 回归编辑器,让 Java 服务启动、编排和调试交给更轻的桌面工具。</strong> |
15 | | -</p> |
| 11 | +<p align="center"><strong>Launch and debug Java services without keeping a full IDE open.</strong></p> |
| 12 | +<p align="center">English · <a href="README.zh-CN.md">简体中文</a> · <a href="https://github.com/LearnAIHubC/JLaunch/releases/latest">Latest release</a></p> |
16 | 13 |
|
17 | | -<p align="center"> |
18 | | - 简体中文 · <a href="README.en.md">English</a> · <a href="https://github.com/LearnAIHubC/JLaunch/releases/latest">下载最新版</a> |
19 | | -</p> |
| 14 | +JLaunch is a lightweight desktop launchpad for Spring Boot, Maven multi-module projects, and Tomcat. Select a Maven root once and it discovers every runnable Spring Boot application below it. Run and Debug both use the selected JDK's `java` executable directly; Maven is used to resolve an IDEA-like classpath, not as the long-running application process. |
20 | 15 |
|
21 | | -JLaunch 是一款面向 Spring Boot、Maven 多模块工程和 Tomcat 的轻量桌面运行器。它会自动识别根目录下所有可运行的 Spring Boot Application,以 `java -classpath ... 主类` 直接启动,并用 JDK 自带的 `jdb` 提供真实断点调试。应用只有 Electron 前端,配置保存在本机 SQLite,不需要独立后端、账号或远程数据库。 |
| 16 | +JLaunch is an Electron-only desktop application. Settings stay in local SQLite—there is no backend, account, or remote database. |
22 | 17 |
|
23 | | -## 核心能力 |
| 18 | +## Highlights |
24 | 19 |
|
25 | | -| 能力 | 说明 | |
26 | | -| --- | --- | |
27 | | -| 自动发现 Application | 选择一个 Maven 根项目,一次识别所有可运行 Spring Boot 工程;普通库模块不会进入运行列表。 | |
28 | | -| 直接 Java 启动 | 普通运行与 Debug 都使用目标 JDK 的 `java`,不会把 `mvn spring-boot:run` 留作常驻进程。 | |
29 | | -| 多项目编排 | 工程按根项目分组,可单独启停,也可在项目组内按照启动顺序依次拉起。 | |
30 | | -| IDEA 风格 classpath | 合并 Maven `runtime + compile` 依赖,将 reactor 模块的 `target/classes` 放在依赖 JAR 前,并兼容 WAR 的 provided 依赖。 | |
31 | | -| 真实断点 Debug | 自动配置 JDWP、连接 JDK 自带 `jdb`,源码树中点击行号即可下断点,请求命中后定位并暂停。 | |
32 | | -| Maven 工具窗 | 浏览完整模块树、选择 Profile、执行 Lifecycle、停止任务并查看独立日志。 | |
33 | | -| 工具链管理 | 自动搜索或手动添加多个 JDK、Maven、Tomcat,每个工程可独立选择版本。 | |
34 | | -| 有界日志 | 项目和 Maven 控制台只保留最近 2,000 行,支持文本、正则、大小写逐行筛选。 | |
| 20 | +- Discover runnable Spring Boot applications while excluding library-only modules. |
| 21 | +- Launch with `java -classpath ... MainClass`, `java -jar`, or managed Tomcat. |
| 22 | +- Merge Maven runtime and compile scopes, including provided dependencies needed by WAR/JSP projects. |
| 23 | +- Group applications by repository and start a repository in configured order. |
| 24 | +- Attach the selected JDK's `jdb`, browse source as a directory tree, set line breakpoints, pause, and resume. |
| 25 | +- Manage multiple JDK, Maven, and Tomcat installations globally or per project. |
| 26 | +- Use a Maven tool window with module tree, Profiles, Lifecycle goals, cancellation, and logs. |
| 27 | +- Keep memory bounded to the newest 2,000 lines per console, with text and regular-expression filters. |
35 | 28 |
|
36 | | -## 下载 |
| 29 | +## Downloads |
37 | 30 |
|
38 | | -前往 [Releases](https://github.com/LearnAIHubC/JLaunch/releases/latest) 下载与你的平台匹配的文件: |
| 31 | +Download the latest build from [GitHub Releases](https://github.com/LearnAIHubC/JLaunch/releases/latest). |
39 | 32 |
|
40 | | -| 平台 | 文件 | 架构 | |
| 33 | +| Platform | Packages | Architectures | |
41 | 34 | | --- | --- | --- | |
42 | | -| macOS | `.dmg` / `.zip` | Apple Silicon、Intel | |
43 | | -| Windows | Setup `.exe` / Portable `.exe` | x64 | |
44 | | - |
45 | | -> 当前公开构建未进行 Apple Developer ID 或 Windows Authenticode 签名。macOS 首次启动请在 Finder 中右键选择“打开”;Windows 可能显示 SmartScreen 提示。源码和 SHA-256 校验文件会与安装包同时发布。 |
46 | | -
|
47 | | -## 快速开始 |
48 | | - |
49 | | -### 1. 配置工具链 |
50 | | - |
51 | | -打开右上角“工具链”。JLaunch 会扫描 `JAVA_HOME`、`MAVEN_HOME`、`M2_HOME`、`CATALINA_HOME`、当前 `PATH`,以及 macOS、Windows、Linux、Homebrew、SDKMAN 等常见安装目录。未被发现的版本可手动选择安装根目录。 |
52 | | - |
53 | | -### 2. 添加 Maven 根项目 |
54 | | - |
55 | | -点击左侧 `+`,选择包含根 `pom.xml` 的目录。JLaunch 会遍历模块,只导入同时满足以下条件的工程: |
56 | | - |
57 | | -- 存在 Spring Boot Maven 插件; |
58 | | -- 源码包含 `@SpringBootApplication`; |
59 | | -- 主类调用 `SpringApplication.run(...)`。 |
60 | | - |
61 | | -工程名称、主类、模块目录会自动填写。`$MODULE_WORKING_DIR$` 会在运行时解析成每个 Application 自己的 Maven 模块目录。 |
62 | | - |
63 | | -### 3. 编译并运行 |
| 35 | +| macOS | DMG, ZIP | Apple Silicon, Intel | |
| 36 | +| Windows | NSIS installer, portable EXE | x64 | |
64 | 37 |
|
65 | | -直接 Java 启动要求模块已有 `target/classes`。首次运行前,可在 Maven 工具窗执行 `compile`。随后点击工程右侧“运行”或“Debug”。 |
| 38 | +Public builds are currently unsigned. macOS may require **Right click → Open**, and Windows may show a SmartScreen warning. Every release includes SHA-256 checksums. |
66 | 39 |
|
67 | | -```text |
68 | | -普通运行 JDK/bin/java -classpath <reactor classes + Maven dependencies> <MainClass> |
69 | | -Debug JDK/bin/java -agentlib:jdwp=... -classpath ... <MainClass> |
70 | | -Tomcat catalina run / catalina jpda run |
71 | | -``` |
72 | | - |
73 | | -## Debug 工作流 |
74 | | - |
75 | | -1. 为工程选择独立 Debug 端口; |
76 | | -2. 点击“Debug”,JLaunch 启动 Java 并自动连接 `jdb`; |
77 | | -3. 在源码树打开 Java 文件,点击行号设置断点; |
78 | | -4. 请求命中断点后,线程暂停并自动定位到对应源码行; |
79 | | -5. 点击“继续”恢复执行。 |
80 | | - |
81 | | -当前调试闭环聚焦断点与继续运行,不提供变量求值和单步执行。Debug 端口只监听回环地址。 |
82 | | - |
83 | | -## 架构与安全边界 |
84 | | - |
85 | | -```mermaid |
86 | | -flowchart LR |
87 | | - UI["Renderer UI"] -->|"白名单 IPC"| PRELOAD["Sandboxed preload"] |
88 | | - PRELOAD --> MAIN["Electron main"] |
89 | | - MAIN --> DB[("Local SQLite")] |
90 | | - MAIN --> PROC["Process manager"] |
91 | | - PROC --> JAVA["JDK / jdb"] |
92 | | - PROC --> MVN["Maven"] |
93 | | - PROC --> TC["Tomcat"] |
94 | | -``` |
| 40 | +## Quick start |
95 | 41 |
|
96 | | -- Renderer 禁用 Node 集成,开启 `contextIsolation`、sandbox 与 CSP;DevTools 和远程调试入口默认关闭。 |
97 | | -- 源码读取验证真实路径,拒绝目录穿越和项目外符号链接。 |
98 | | -- SQLite 使用 WAL 与事务;没有 HTTP 服务,不上传项目源码或运行日志。 |
99 | | -- 环境变量以明文保存在本机 SQLite,请勿存放不应落盘的长期密钥。 |
100 | | -- 应用退出时先优雅停止托管进程,超时后清理完整进程树。 |
| 42 | +1. Open **Toolchains** and let JLaunch discover JDK, Maven, and Tomcat installations. |
| 43 | +2. Add a directory containing a root `pom.xml`. |
| 44 | +3. Run Maven `compile` once if the modules do not have `target/classes` yet. |
| 45 | +4. Select an application and choose **Run** or **Debug**. |
101 | 46 |
|
102 | | -更多细节见 [架构说明](docs/ARCHITECTURE.md) 与 [安全策略](SECURITY.md)。 |
| 47 | +`$MODULE_WORKING_DIR$` resolves to each discovered application's own Maven module directory. |
103 | 48 |
|
104 | | -## 本地开发 |
| 49 | +## Development |
105 | 50 |
|
106 | | -要求 Node.js 22+ 与 npm 10+。 |
| 51 | +Requirements: Node.js 22+ and npm 10+. |
107 | 52 |
|
108 | 53 | ```bash |
109 | 54 | npm ci |
110 | 55 | npm start |
111 | 56 | npm run check |
112 | | -``` |
113 | | - |
114 | | -生成当前平台安装包: |
115 | | - |
116 | | -```bash |
117 | 57 | npm run dist |
118 | 58 | ``` |
119 | 59 |
|
120 | | -输出目录为 `release/`。Windows、macOS 安装包应在对应系统或 GitHub Actions runner 上构建。 |
121 | | - |
122 | | -## 参与贡献 |
123 | | - |
124 | | -欢迎提交 Bug、功能建议和 Pull Request。开始前请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。版本变化见 [CHANGELOG.md](CHANGELOG.md)。 |
| 60 | +See [Architecture](docs/ARCHITECTURE.md), [Contributing](CONTRIBUTING.md), and [Security](SECURITY.md) for more detail. |
125 | 61 |
|
126 | 62 | ## License |
127 | 63 |
|
|
0 commit comments