1

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

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

例子:

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

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

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

这怎么能改变?

4

1 回答 1

0

当您说“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));
    }
}

于 2020-10-24T10:49:20.127 回答