java - JCommander 是否支持不带前缀的动态参数?
问题描述
我正在尝试移植 CLI 以使用JCommander,但我的应用程序允许在命令行上传递自定义参数,如下所示:
./App.sh -u myusername -customparam1 customval1
在这种情况下customparam1
是自定义参数的名称和customval1
它的值。用户可以传递任意数量的此类参数,名称可以是任何名称,例如customparam2
,等等。
JCommander 是否能够解析这些类型的参数?我尝试使用动态参数,但有两个问题:
- 它们似乎需要在参数名称之前有一个前缀,例如
-Dcustomparam1
,D
前缀在哪里 - 它们需要一个赋值字符,例如
=
在名称和值之间,并且空格不能作为赋值字符
关于如何使用 JCommander 解析这些参数有什么建议吗?
解决方案
我发现了一个未记录的配置选项acceptUnknownOptions
,可以像这样使用:
JCommander jc = JCommander.newBuilder().addObject(app).acceptUnknownOptions(true).build();
...
List<String> unknowns = jc.getUnknownOptions();
推荐阅读
- cdap - 如何通过 CDAP 管道的文件提供运行时参数/参数值
- sql - SQL Select语句如何返回表情符号
- javascript - 尝试构建自己的 Angular 表格组件但错误的 HTML 结构
- elasticsearch - 向弹性搜索服务器发送 curl 请求时不支持错误 application/x-www-form-urlencoded
- swift - 如何使用主页快速操作打开特定视图
- reactjs - 状态钩子中的 setState 第二个参数回调函数替代
- jpa - EclipseLink 在构造函数表达式中使用 SELECT ... AS 时抛出 JPQLException
- azure - Azure Application Insights 控制台日志格式
- javascript - 如果两个或多个键值相同,如何对字典列表中的元素求和
- visual-studio - Visual Studio Blazor 所见即所得设计师