【问题标题】:Spring boot ignores arguments passed after jvmArgumentsSpring boot 忽略 jvmArguments 之后传递的参数
【发布时间】:2020-06-04 09:24:58
【问题描述】:

我正在尝试在调试模式下运行我的一个微服务。 为此,我将 jvmArguments 添加到启动应用程序的命令中。

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000" -Dspring.profiles.active="dev" -DAUTH0_CLIENT_ID="somevalue123" -DAUTH0_CLIENT_SECRET="somevalue123" -DACMS_CRYPTO_KEY="somevalue123" -DACMS_NODE_NAME="n/a" -DACMS_POD_IP="n/a" -DACMS_POD_NAMESPACE="n/a" -DACMS_POD_NAME="n/a"

当我使用 .yml 文件来提供 client_id、client_secret 和 crypto_key 时,我也需要传递它们。这是配置文件:

acms:
  crypto:
    key: ${ACMS_CRYPTO_KEY}
  node:
    name: ${ACMS_NODE_NAME}
  pod:
    name: ${ACMS_POD_NAME}
    namespace: ${ACMS_POD_NAMESPACE}
    ip: ${ACMS_POD_IP}
  env:
    info:
      enabled: false
auth0:
  clientId: ${AUTH0_CLIENT_ID}
  clientSecret: ${AUTH0_CLIENT_SECRET}

没有调试模式一切正常。但是当我添加

-Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"

我收到错误:应用程序运行失败

org.springframework.beans.factory.BeanCreationException: 错误 创建名为“acmsConfig”的bean:注入自动装配 依赖失败;嵌套异常是 java.lang.IllegalArgumentException: 无法解析占位符 值“${ACMS_CRYPTO_KEY}”中的“ACMS_CRYPTO_KEY”

那么如何在不破坏其他参数的情况下添加调试模式命令?

【问题讨论】:

  • 尝试在 jvmArguments 部分中包含所有 java 参数,而不是使用 -D 单独提及它们
  • 为什么不在 IDE 内部运行?
  • @SivaKumar 你是对的,我在里面添加了所有参数并且它起作用了!谢谢

标签: spring-boot maven yaml


【解决方案1】:

SivaKumar 的回答解决了这个问题。工作命令如下所示:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Dspring.profiles.active=dev -DAUTH0_CLIENT_ID=testid -DAUTH0_CLIENT_SECRET=testsecret -DACMS_CRYPTO_KEY=testkey -DACMS_NODE_NAME=n/a -DACMS_POD_IP=n/a -DACMS_POD_NAMESPACE=n/a -DACMS_POD_NAME=n/a"

【讨论】:

    猜你喜欢
    • 2015-06-01
    • 2020-03-15
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2018-07-30
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多