如何在Micronaut应用中通过PICOCLI执行JAR并指定不同运行环境
Micronaut Picocli 指定运行环境解决方案
方式1:直接传递官方标准参数
Micronaut 原生支持解析所有以 micronaut. 开头的命令行参数,不需要额外在 Picocli 代码中定义对应选项,启动时直接追加参数即可:
# 启用单个 PROD 环境 ./你的应用名 --micronaut.environments=PROD # 同时启用多个环境,用逗号分隔 ./你的应用名 --micronaut.environments=MOCK,PROD
注:Micronaut Picocli 应用默认会自动激活
CLI环境,就算指定了自定义环境该环境也会默认保留,如果需要完全禁用默认CLI环境,可追加参数--micronaut.env.cli.enabled=false
方式2:自定义 Picocli 选项显式控制
如果需要做参数别名、参数校验或者和其他逻辑联动,可以在命令类中自定义选项,运行时手动设置环境:
- 在命令类中添加环境选项定义
@Command(name = "你的命令名", description = "命令功能描述") public class YourCommand implements Runnable { // 自定义短参数-e,简化输入 @Option(names = {"-e", "--env"}, description = "指定运行环境,多个环境用逗号分隔") private List<String> envs; @Override public void run() { if (envs != null && !envs.isEmpty()) { // 手动设置系统属性,优先级高于默认配置 System.setProperty("micronaut.environments", String.join(",", envs)); } // 后续业务逻辑 } }
- 运行时调用示例:
./你的应用名 -e MOCK
方式3:通过系统环境变量全局指定
如果不想每次启动都传参数,可提前设置对应系统环境变量:
# Linux/Mac 环境 export MICRONAUT_ENVIRONMENTS=PROD ./你的应用名 # Windows CMD 环境 set MICRONAUT_ENVIRONMENTS=PROD 你的应用名.exe
优先级说明:命令行参数 > 代码中设置的系统属性 > 系统环境变量 > 配置文件默认配置
内容的提问来源于stack exchange,提问作者Douglas
相关产品推荐
相关产品推荐

