问题标签 [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.

0 投票
1 回答
122 浏览

java - Picocli 解析搜索字符串

我想为我的程序提供一个搜索字符串,例如:

我想创建谓词来搜索包含红色或蓝色和黑色但不是非产品的主机名。我不清楚如何将逻辑运算符与 Picocli 中的字符串一起解析以创建谓词。是否有一种简单直接的方法可以将字符串解析为谓词?

我的 CLI 设置如下:

}

0 投票
1 回答
136 浏览

java - 在运行时启用或禁用选项

我正在尝试使用 Picocli 制作交互式 cli,并希望在完成 a(n) 操作/要求后显示一些选项。有没有办法在不使用 CommandSpec 的情况下做到这一点?

之前显示的选项

之后显示的选项

输出应该是

0 投票
1 回答
410 浏览

java - 实现 cli 应用程序的适当方法,该应用程序还使用 Micronaut 的服务配置文件

我在创建 REST 服务器或 Picocli CLI 应用程序方面没有问题。但是,如果我想在一个应用程序中同时拥有这两者怎么办?

问题是,我想要一个通过 REST 服务器提供一些业务逻辑的应用程序(那里没问题),但在其他一些情况下,我想通过 CLI 触发业务逻辑而不启动 HTTP 服务器(例如,对于 CI/CD )。

我不确定如果我通过启动应用程序 PicocliRunner.run(Application.class, args)并且如果给定特定参数运行服务器是否遇到问题Micronaut.run(Application.class);,因为它们会创建不同的上下文。

有谁知道实现这一目标的正确方法?

这就是我解决它的方法:

0 投票
1 回答
125 浏览

java - Lambda 表达式中的模式匹配

我正在使用 Picocli 创建一个 CLI 应用程序。下面的代码位于我的一个类的 run 方法中。它使用 Picocli 提供的 CommandLine.execute 命令执行。

我无法弄清楚这段代码中导致空指针的原因:

导致错误的输入:

完整的错误信息:

0 投票
1 回答
4022 浏览

picocli - 显示多个命令用法的 picocli 示例

我得到了一些与 picocli 配合得很好的代码:

但我没有找到一个显示使用的多个命令的简单示例,例如这个:
https ://github.com/remkop/picocli/blob/master/src/test/java/picocli/Demo.java

不编译:

有人可以发布一个关于如何使用多个命令的示例吗?

0 投票
1 回答
382 浏览

java - 如何从 picocli 命令正确启动 micronaut 网络服务器?

我有一个micronaut cli 应用程序

一些命令是我想用micronaut 端点监控的长时间运行的过程

因为当您使用 cli 应用程序时,micronaut 会检测并且不会启动网络服务器。

在这个长时间运行的命令中,我添加了这个来启动网络服务器:

大部分代码来自Micronaut.java

完整的命令源代码:

网络服务器启动良好。我添加了 2 个端点,记录器和运行状况。记录器端点运行良好,但健康端点(像大多数端点一样)因此堆栈跟踪而失败: 完整堆栈跟踪

有什么线索可以做到这一点吗?

0 投票
1 回答
688 浏览

java - Picocli:为具有 Map 类型的选项指定默认值

我有这样的选择

当我执行以下操作时,这确实有效:

但是当我这样做时

这没用。有没有办法为没有关联值的键添加默认值?

0 投票
1 回答
690 浏览

picocli - 为什么 picocli 需要 ArgGroup 中的 args,即使默认多重性为 0..1?

您可以在此处找到代码示例。 链接到我的 GitHub 项目

在文件 Driver.java 中,可以看到我指定了一个独占的 ArgGroup。我根据文档的理解是默认的多重性是 0..1。文档指出,“默认值为 multiplicity = "0..1",这意味着默认情况下可以省略或指定一个组”。

我也尝试将多重性显式设置为 0..1 但这并没有改变行为。在没有 -al 或 -rl 选项的情况下运行程序,解析会引发 NullPointerException。该框架的行为就像需要其中一个选项一样。这与文档不一致。如果我愿意,我应该可以只使用 -n 选项来运行这个程序。我希望 ArgGroup 完全是可选的。

git hub 链接上的程序是一个功能齐全的 maven 项目,可以克隆、构建和运行。然而,这里是堆栈跟踪。没有指定参数或没有 arg 组。我希望完全没有参数可以打印使用信息。此外,该组的默认多重性应该是 0..1,所以我不应该指定 arg 组中的选项之一。

0 投票
2 回答
611 浏览

spring-boot - 如何将 Picocli 解析的参数注入 Spring Bean 定义?

我正在尝试使用Picocli和 Spring Boot 2.2 将命令行参数传递给 Spring Bean,但不确定如何构建它。例如,我有以下@Command从命令行指定连接用户名和密码,但是,想使用这些参数来定义一个 Bean:

我在这里陷入了一个循环。我需要命令行用户名/密码来实例化我的 JMSPublisherBean,但这些仅在运行时可用,在启动时不可用。

我已经设法通过使用延迟初始化、将ClearJdoCommandbean 注入配置 bean 并run()从 Spring 上下文中检索我的 JMSPublisherBean 来解决这个问题,但这似乎是一个丑陋的 hack。此外,它迫使我所有的豆子都是懒惰的,这不是我的偏好。

是否有另一种/更好的方法来实现这一目标?

0 投票
1 回答
458 浏览

java - 使用 Picocli,我如何需要一个位置参数,然后是可选参数,具体取决于位置参数的值

我有一种情况field1,我需要三个强制参数(field2和可以输入)。field3command namecreatelist

有些命令会有参数,有些则没有。我该如何处理?

我尝试了以下操作,但出现错误: