【问题标题】:How to configure lightbend/typesafeConfig via command line parameter when using picocli使用 picocli 时如何通过命令行参数配置 lightbend/typesafeConfig
【发布时间】:2021-02-06 16:43:09
【问题描述】:

在我们的项目中,我们使用Lightbend Config / TypesafeConfig。

我可以使用java -jar 运行我的程序。我的程序的配置也可以通过命令行参数来完成。

例子:

java -jar simpleclient.jar -Dservice.url="http://localhost:8123"

现在我介绍了https://picocli.info/,以便更好地处理我的应用程序的命令行。

我现在面临的问题是,picocli 不允许在标准配置中使用 -D... 参数。

如何改变?

【问题讨论】:

    标签: java environment-variables command-line-arguments typesafe-config picocli


    【解决方案1】:

    当您说“picocli 不允许使用 -D... 选项”时,我假设您的意思是您希望允许最终用户使用 -Dkey=value 语法设置系统属性。当这些参数传递给应用程序时,应用程序需要使用这些值来设置系统属性,如下所示。

    首先,用户可以通过将-Dkey=value 参数传递给java 进程而不是jar 中的主类来设置系统属性。在下面的调用中,系统属性是直接设置的,不会作为参数传递给应用程序:

    java -Dservice.url="http://localhost:8123"  -jar simpleclient.jar
    
    

    其次,您可以在设置系统属性的应用程序中定义-D 选项:

    @Command
    class SimpleClient {
    
        @Option(names = "-D")
        void setProperty(Map<String, String> props) {
            props.forEach((k, v) -> System.setProperty(k, v == null ? "" : v));
        }
    }
    
    

    【讨论】:

    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2017-03-08
    相关资源
    最近更新 更多