问题标签 [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.
picocli - picocli :将标准输出和标准错误重定向到记录器
.execute()
将输出(out/err)从或重定向.parseArgs()
到记录器( )的正确/最简单的方法是什么org.slf4j.Logger
?
(生产过程通常由调度程序执行,并输出到特定于应用程序的日志文件。如果没有重定向,stdout/err 会被转储到调度程序/服务器日志中 - 这是不合适的。因此这个问题。)
我有这样的事情:
LoggerWriter
课程的灵感来自这里。
java - 解析多个 picocli(子)命令和 shell
如何构建一个Spring Boot 2.3多命令 CLI 应用程序,该应用程序可以使用单个命令、@script 并在picocli中以交互方式运行?它的行为应该是这样的:
用户名-u
和密码-p
是必需的,三个命令(list
、create
和delete
)各有不同的选项和参数。
java - 两个带有 Apache Commons CLI 的专有 OptionGroup
我正在构建命令行 Java 应用程序,但在使用 Apache Commons CLI 解析命令行参数时遇到问题。
我试图涵盖我的场景,其中我需要两个具有长 (- -abc
) 和短 ( -a
) 参数的专有命令行参数组。
用例 1
- 短参数:
-d oracle -j jdbc:oracle:thin:@//host:port/databa
- 相同但参数长:
-dialect oracle -jdbcUrl jdbc:oracle:thin:@//host:port/databa
用例 2:
- 短参数:
-d oracle -h host -p 1521 -s database -U user -P pwd
- 相同但参数长:
-dialect oracle -host host -port 1521 -sid database -user user -password pwd
所以我OptionGroup
用正确的Option
项目创建了两个:
第二组:
然后我以Options
这种方式构建对象:
但这不起作用,因为它希望定义这两个组。
方言Option
是这样定义的:
Option
除了这个属性之外,其他强制性定义看起来相似:
结果:
-d oracle
:缺少必需的选项:[-j ...]、[-h ...、-p ...、-s ...、-U ...、-P ...]-d oracle -jdbcUrl xxx
:缺少必需的选项:[-h ...,-p ...,-s ...,-U ...,-P ...]-d oracle -h yyy
:缺少必需选项:[-j ...]
但我想要的是以下内容:如果提供了 JDBC URL,则不需要主机、端口等参数,或者相反。
java - 为什么 picocli 不能从命令行识别我的选项?
我正在尝试使用 PICOCLI 在 Java 中构建 CLI,但我在一个非常基本的点上遇到了困难。我根本无法将我的应用程序提供给消费者一个选项和它的价值。这是我的课:
然后我做了一个mvn package
,但我只遇到了这个:cd target
java -jar demo-1.0.jar Greet -u pico
我已经没有耐心尝试打印一条简单的消息了!我不知道如何解决这个问题。请帮忙!
spring-boot - 如何将相对路径参数与 Spring Boot/picocli 可执行 jar 一起使用?
我有一个命令行应用程序,它使用 Spring Boot 和 picocli。可以传递参数,它是一个路径,例如myApp.jar /path/to/file
,它将对该文件执行某些操作。我想在系统范围内使用这个应用程序,所以我将可执行文件.jar
放入/usr/bin/
并将其重命名为myApp
.
现在,当我将它与绝对路径一起使用时:myApp /home/user/file
它工作正常,但我想传递相对路径,例如,当我在时,/home/user/
我希望它是myApp ./file
. 问题是它尝试使用相对路径/usr/bin/file
而不是/home/user/file
.
我目前使用的解决方法是这样的:myApp $(pwd)/file
.
你知道如何解决这个问题吗?
java - 如何从字符串选项中转义字符
我有一个简单的 java 应用程序,带有一个命令和几个选项。对于我想传递带有单引号和空格的字符串的选项之一。可能吗?
我使用 picocli 4.5.0。以下是我想要实现的
我设置trimQuotes
为false
,但出现错误
是否可以转义整个字符串/选项?
java - 将基于 picocli 的 CLI 使用输出解析为结构化数据
我有一组基于 picocli 的应用程序,我想将使用输出解析为结构化数据。到目前为止,我已经编写了三个不同的输出解析器,但我对其中任何一个都不满意(脆弱性、复杂性、扩展困难等)。关于如何干净地解析这种类型的半结构化输出有什么想法吗?
使用输出通常如下所示:
我想将程序名称和描述、选项、参数和参数组及其描述捕获到agent
:
程序名称taker-mvo-2
和(可能是多行的)描述在(可能是多行的)参数列表之后:
选项(在方括号中)应该被解析为:
解析选项的 JSON 是:
同样对于应该解析成的参数:
和参数组,它们被包围(
并且)...
应该被解析为:
我编写的第一个手写解析器遍历缓冲区,在数据处理过程中捕获数据。它工作得很好,但看起来很可怕。而且扩展很可怕。第二个手写解析器在遍历缓冲区时使用正则表达式。比第一个更好看,但仍然丑陋且难以扩展。第三个解析器使用正则表达式。可能是这群人中最好看的,但仍然丑陋且难以管理。
我认为手动解析此文本非常简单,但现在我想知道 ANTLR 是否可能是一个更好的工具。有什么想法或替代想法吗?
java - 在 Intellij maven 项目中使用模块设置 picocli 注释处理器
我不知道如何在基于 maven 的 intellij 项目中设置 picocli Anotation 处理器。
考虑以下主要 pom:
picocli 代码位于核心模块中。但是,只要我在编译器插件中添加配置,我的所有 IntlliJ 配置都会变得无效。我将 pico 配置放在主模块还是核心中都没关系,两者都不起作用。核心模块 pom 仅用于测试和打包。
该代码仍可编译并可用作 jar(无编译时错误检查),但不能在 IntelliJ 中使用。该示例有效。但它不使用模块。
我该怎么做才能在intelliJ中修复它?
java - 使用 picocli 时如何通过命令行参数配置 lightbend/typesafeConfig
在我们的项目中,我们使用Lightbend Config / TypesafeConfig。
我可以运行我的程序java -jar
。我的程序的配置也可以使用命令行参数来完成。
例子:
现在我介绍了https://picocli.info/以便为我的应用程序提供更好的命令行处理。
我现在面临的问题是,picocli 不允许在标准配置中使用 -D... 参数。
这怎么能改变?
command-line-interface - 文本格式不适用于 CLI - 使用 PICOCLI java
我一直在尝试在CLI上显示格式化文本。我尝试了picocli docs (doc link)中提供的完全相同的代码,但似乎没有应用格式。
请帮助我找出我的错误。
预期产出
我的代码
我的输出(未应用格式)
PS。我使用picocli v 4.5.2,将项目导出为可运行 jar,并使用Launch4j将其构建为.exe。在 Windows 10 的命令提示符下执行结果exe。