Maven启动Quarkus应用方法及本地批量运行20个Quarkus JAR应用的最优方案咨询
Maven启动Quarkus应用方法及本地批量运行20个Quarkus JAR应用的最优方案咨询
嘿,针对你要批量运行20个Quarkus JAR应用的需求,我整理了几个高效且易管理的方案,你可以根据自己的实际场景来选:
1. 脚本批量启动(轻量直接的首选)
如果不想引入额外工具,写个简单脚本是最快的方式:
Windows(.bat脚本):
@echo off REM 假设所有JAR在同一目录,也可以逐个指定路径 for %%f in (*-runner.jar) do ( start "Quarkus App - %%~nf" java -jar "%%f" )这个脚本会遍历当前目录下所有带
-runner.jar的Quarkus可执行JAR,每个应用都在独立窗口启动,方便查看各自日志。Linux/macOS(.sh脚本):
#!/bin/bash for jar in ./*-runner.jar; do # 后台启动,日志单独存入对应文件,方便排查 java -jar "$jar" > "${jar%.jar}.log" 2>&1 & echo "Started $jar with PID $!" done这种方式会给每个应用生成独立日志文件,还会打印进程ID,后续停止进程也更方便。
2. 多模块Maven项目+Quarkus Dev模式(开发阶段友好)
如果你的20个应用是关联服务,可以整合成多模块Maven项目:
- 在父pom.xml里用
<modules>标签包含所有子项目 - 然后在父目录运行:
这个命令会同时启动所有子模块的Quarkus开发模式,Quarkus还会自动处理端口冲突(默认自动分配不同端口),开发时支持热重载,调试起来超方便。mvn quarkus:dev -Dquarkus.dev.services.all=true
3. Docker Compose容器化(贴近生产环境的规范方案)
要是想模拟生产部署方式,Docker Compose是最佳选择:
- 给每个Quarkus应用写简单的Dockerfile:
FROM openjdk:17-jdk-slim COPY target/*-runner.jar app.jar EXPOSE 8080 CMD ["java", "-jar", "/app.jar"] - 编写
docker-compose.yml,把20个服务都定义进去,每个服务指定端口映射、环境变量:
之后只需要version: '3.8' services: app1: build: ./app1 ports: - "8081:8080" environment: - QUARKUS_DATASOURCE_JDBC_URL=jdbc:postgresql://db:5432/app1_db app2: build: ./app2 ports: - "8082:8080" # 其他应用依次配置...docker-compose up -d就能一键启动所有服务,用docker-compose logs -f查看所有日志,停止时用docker-compose down,管理起来特别整洁。
4. 进程管理工具(比如Supervisord,类Unix系统长期运行首选)
在Linux/macOS上,Supervisord可以帮你统一管理所有Quarkus进程:
- 安装后编写
supervisord.conf,每个应用对应一个[program]块:
启动Supervisord后,用[program:app1] command=java -jar /path/to/app1-runner.jar directory=/path/to/app1 stdout_logfile=/var/log/supervisor/app1.log stderr_logfile=/var/log/supervisor/app1.err autostart=true autorestart=true [program:app2] command=java -jar /path/to/app2-runner.jar directory=/path/to/app2 stdout_logfile=/var/log/supervisor/app2.log stderr_logfile=/var/log/supervisor/app2.err autostart=true autorestart=true # 剩余应用依次配置supervisorctl start all启动所有应用,supervisorctl status查看状态,supervisorctl stop all停止所有进程,适合长期运行多服务的场景。
额外小贴士:
- 端口冲突处理:Quarkus默认用8080端口,批量启动时要确保每个应用端口不同,可以通过启动参数指定:
java -jar app-runner.jar -Dquarkus.http.port=8081,或者在application.properties里配置quarkus.http.port=xxx - 资源监控:20个应用可能占用较多内存,建议用
jconsole(跨平台)、top(Linux)或任务管理器(Windows)监控资源,必要时给每个JVM指定内存参数:java -Xmx512m -jar app-runner.jar
内容来源于stack exchange
相关产品推荐
相关产品推荐

