【问题标题】:How do I pass command line options into a Spring application with gradle如何使用 gradle 将命令行选项传递给 Spring 应用程序
【发布时间】:2019-09-03 16:38:47
【问题描述】:

Spring docs

默认情况下,SpringApplication 会将任何命令行选项参数(即以 -- 开头的参数,例如 --server.port=9000)转换为属性并将它们添加到 Spring 环境中。

当我尝试将其传递给 gradle 时

gradle clean build --rerun-tasks --server.port=9000

它失败了:

Unknown command-line option '--server.port'.

如何让 gradle 接受普通的命令行选项参数?请注意,我正在运行测试,而不是 Spring 应用程序本身。

【问题讨论】:

  • 不:Problem configuring task :build from command line. > Unknown command-line option '--args'。如果我只是尝试gradle --rerun-tasks --args='--servicenow.password=123' 我会得到同样的错误。
  • build 任务构建您的应用程序。它不运行它。运行它的任务是bootRun
  • 我正在运行测试,而不是应用程序本身。我可以用gradle --rerun-tasks --args='--server.port=9000' 做到这一点,但这也失败了。
  • 那么你不能传递参数。例如在代码中使用 TestProperties 注解,或者在测试任务中设置系统属性。

标签: spring gradle


【解决方案1】:

另一种可能的解决方案是将构建 gradle 调用包装到 sh 脚本中。您可以将任何 CMD 变量放入构建脚本中。

例子:

myBuildScript.sh:

gradle clean buildTaskName $1

在 build.gradle 中使用您的变量,例如 MY_VARIABLE_NAME。

执行脚本:

MY_VARIABLE_NAME=value ./myBuildScript.sh

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 2019-11-10
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2010-11-13
    • 2010-09-30
    相关资源
    最近更新 更多