问题标签 [picocli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Picocli 不会在每次执行时重置集合字段?
我最近将我的项目升级到 Picocli 4.2.0,包括删除所有不推荐使用的方法调用,并且我一直在继续我在这里描述的工作。我又遇到了同样的问题——我有一个似乎没有重置的字段。与我的其他问题唯一不同的是,现在该字段是一个集合。代码如下所示:
(此处提供完整代码。)
具体来说,productionsToEnable
似乎没有重置。调用的方式是单元测试的一部分:
(此处提供完整代码。)
当最后一次调用命令时"c"
,最后一次调用的字符串production watch
仍然存在。productionsToEnable
production watch
eval
请注意,上面的代码链接位于jsoar-command-performance
分支上,以防有助于仔细查看。
java - Picocli:是否可以在名称中定义带有空格的选项?
我用谷歌搜索了一下,还搜索了 StackOverflow,当然还有 Picocli 文档,但没有找到任何解决方案。
我工作的公司在批处理程序中使用特殊格式的命令行参数:
(不要问我为什么用这种格式,我已经质疑过了,没有得到正确的答案。)现在我想用Picocli进行命令行解析。但是,我无法让它与我们使用的参数格式一起使用,因为空间使 Picocli 认为这是两个单独的参数,因此它不会将它们识别为我定义的参数。
这显然行不通:
使用 -VAR BOOLEANARG=FALSE 调用程序不会有任何效果。
有没有办法自定义定义那些包含空格的特殊选项名称?或者我该怎么做?我也不允许将多个参数作为参数折叠到一个 -VAR 选项中。
非常感谢您的帮助。谢谢和最好的问候, 罗莎
java - PicoCli 相互依赖选项问题(解析值)
我在下面有以下代码。
我的用例是,当使用选项--install 时,您还必须使用选项--version。这在使用下面的依赖组时效果很好。
但是我无法获得变量版本的值。我如何提取/解决它?有什么方法可以通过 call() 方法做到这一点?
感谢您的帮助:D
java - Bash 去除传递给 java 命令行应用程序的引号
我有一个使用 Picocli 编写的 java 命令行应用程序,我试图向它传递一个字符串参数,但每次我尝试 bash 时都会去掉引号并以三个参数结束。
这是我在 bash 中收到的输出
我尝试使用转义单引号(\')和双引号(\"),转义空格(\),甚至单引号和双引号(带和不带),但它们都不起作用。简单的解决方案是将包重命名为 extras_lib_v0 .1.4.cpkg 但其他方法也会有同样的问题。
picocli - Picocli:任意长度的成对参数
在 Picocli 中,是否可以配对任意长度的参数?例如:
其中每一对必须有一个名字和一个等级,但总长度是未知的,即:
参数图是最接近的,可能会起作用,例如
会解析:
进入地图,但如果不存在平等会更好......
java - 基于主要选项的 Picocli 所需选项选择
我想用以下格式解析带有 picocli 的选项:
mode
是一个enum
带有值的{ CLIENT, SERVER }
- 如果
mode == CLIENT
,-c
和-d
选项是强制性的,并且-e
,-f
不能使用。 - 如果
mode == SERVER
,-e
和-f
选项是强制性的,并且-c
,-d
不能使用。
换句话说,我想根据一个关键选项来选择所需的选项。这在picocli中可能吗?
java - 无法解释的 Singleton / Picocli 行为
我正在编写一些代码,但我无法弄清楚我的错误是怎么回事。我希望这里有人可以给我一些答案。这是我的代码(相关部分):
如您所见,我的班级是单身人士。注释来自 picoli,我用它来解析命令行参数。-callsSystem.out
用于调试。这是我无法解释的行为:
当我使用例如“-h”作为参数启动我的应用程序时,我得到的帮助打印得很好。显示System.out.println
单例已创建并set_validate()
使用默认值调用。但是当我--validate
用作论据时,情况就会改变。
由于某种原因,构造函数和默认集被连续调用两次。之后,set_validate()
被调用true
(因为它应该)。但是,似乎第一次调用设置了静态实例变量,而最后一次调用 true 是在第二个实例上完成的(我的理论)。结果,当我从我的主方法(在另一个类中)检查我的单例实例的状态时,我得到了错误,因为它没有在正确的实例中设置_validate
。validate()
我使用搜索引擎检查:
- 除了静态单例实例(正如预期的那样,因为它是私有的)之外,不会在任何地方调用构造函数。
_validate
除了我发布的代码外,其他地方都无法访问。set_validate()
不在任何地方调用。只有 Picocli 调用它。
我不知道接下来要检查什么。有任何想法吗?
问候
托尔斯滕
编辑:
AppData
是持有数据的多个类之一。它们都被收集在 Picocli 的一个大类中,如下所示:
在我的主要方法中是这样使用的:
picocli - picocli : 解析没有样板的参数
我通常将所有命令行选项存储到不同的类,例如CliArguments。这避免了主类中的噪音。这就是我对picocli所拥有的:
如何避免锅炉板方法,pargeArgs(String[])
?从技术上讲, CliArguments类不应实现Callable或Runnable。我可以使MyApp成为Callable或Runnable。但是对于CommandLine,new MyApp()不是命令,new CliArguments()是。
如果我想做这样的事情:
如何在MyApp中仍具有执行控制权的同时将所有@Option
规范推到另一个类CliArguments?
我确信我错过了一些直截了当的东西。
picocli - picocli : ArgGroup 中的依赖参数
我的问题与此处提出的问题相似且更简单。
我有三个选项,-A
, -A1
, -A2
(从概念上讲,是单个组的一部分)。所需的关系如下:
- 这些都不是必需的
-A
应与至少一项-A1
或-A2
- 两者
-A1
和-A2
可以单独给出-A
换句话说:
- 有效规范:
-A -A1
、-A -A2
和-A -A1 -A2
- 无效规范:
-A
、-A1
、-A2
和-A1 -A2
这就是我使用两个@ArgGroup
s:
有没有更简单的方法?
谢谢!
picocli - picocli : List<> 选项,在@ArgGroup 中使用,在短用法字符串中重复
在 中使用List<>
选项时@ArgGroup
,它会在简短的使用帮助中重复出现。考虑以下代码:
显示以下输出
我期待输出
@ArgGroup
由于其他原因在代码中需要它,但在这个玩具示例中似乎是徒劳的。