标签: picocli

547
推荐指数
15
解决办法
34万
查看次数

是否有良好的Java库可以帮助构建命令行应用程序?

我需要用Java编写一个简单的命令行应用程序.使用一个负责解析命令的库并处理标志和可选/强制参数之类的事情会很好.

UPDATE

内置TAB完成的东西会特别棒.

java shell command-line interactive picocli

40
推荐指数
4
解决办法
2万
查看次数

适用于Java的最佳CLI解析器

哪种Java解析器易于使用且比其他解析器更具可扩展性?

java command-line picocli

33
推荐指数
1
解决办法
4万
查看次数

具有子命令支持的Scala命令行解析器

我正在寻找Scala的命令行解析器,支持子命令(类似于Python中的argparse).看起来Scala(Scopt,Argot等)有许多不同的命令行解析器,但它们似乎都不支持子命令解析.我只是错过了这些其他库支持子命令的事实,如果没有,是否存在任何此类库?

parsing scala command-line-arguments picocli

11
推荐指数
0
解决办法
1774
查看次数

Java CLI解析器

我知道这个问题已经被提出,但我正在寻找具有特定功能的Java cli解析器.我希望它能够定义命令行树,从而使用子命令(和多个级别深度).因此,在我到达选项之前,我可以有3-4级命令.这些子命令是互斥的.谢谢

java command-line-interface subcommand picocli

10
推荐指数
3
解决办法
3369
查看次数

命令行解析器和缺少子命令和分组?

我知道这个问题在这里和其他地方已被多次询问过,因为我正在寻找答案.但是,它仍然让我感到困惑,为什么命令行解析器库不提供这种常见的使用场景,其中我有一组子命令,每个子命令都有自己的必需和可选参数集.类似的构造可以在git/svn中找到,但在它们的情况下,如果我没有弄错的话,子命令命令是一个独立的程序.

总而言之,我正在寻找的是一种简单的方法:

top_command subcmd_A [ command A's options ....]
top_command subcmd_B [ command B's options ....]
...
Run Code Online (Sandbox Code Playgroud)

在java的世界中,两个经常提到的库是Apache Command CLI和JSAP.我没有看到他们中的任何一个都考虑到这一点 - 虽然你可能会调整和定制很多东西以适应......但是定义一个选项的基本流程,注册......然后在最后,解析它们都没有'为了考虑使用不同子命令的情况,验证和解析器需要以不同的方式运行.

也许这里的常识是,这是特定于应用程序的,应留给应用程序本身来处理.我能想到的一种方法是定义一个BaseCommand类,每个子命令扩展它并自己注册......作为一种分解它以便于管理的方法.如果任何成熟的框架可以做到这一点,我会在这里感谢任何指针.

我对当前解析器功能的理解可能是错的,但是我们非常感激任何洞察力.

java picocli

8
推荐指数
1
解决办法
2444
查看次数

如何将 Picocli 解析的参数注入到 Spring Bean 定义中?

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

@Component
@CommandLine.Command
public class ClearJdoCommand extends HelpAwarePicocliCommand {
    @CommandLine.Option(names={"-u", "--username"}, description = "Username to connect to MQ")
    String username;

    @CommandLine.Option(names={"-p", "--password"}, description = "Password to connect to MQ")
    String password;

    @Autowired
    JMSMessagePublisherBean jmsMessagePublisher;

    @Override
    public void run() {
        super.run();
        jmsMessagePublisher.publishMessage( "Test Message");
    }
}


@Configuration
public class Config {
    @Bean
    public InitialContext getJndiContext() throws NamingException {
        // Set up the namingContext for the JNDI lookup
        final Properties env …
Run Code Online (Sandbox Code Playgroud)

spring-boot picocli

5
推荐指数
1
解决办法
1242
查看次数

picocli :将 stdout 和 stderr 重定向到记录器

从记录器 ( ) 重定向输出 (out/err).execute()或将输出重定向到记录器 ( ) 的正确/最简单方法是什么?.parseArgs()org.slf4j.Logger

(生产过程通常由调度程序执行,并输出到特定于应用程序的日志文件。并且 stdout/err,如果不重定向,就会转储到调度程序/服务器日志中 - 这是不合适的。因此出现了这个问题。)

我有这样的事情:

Logger logger = LoggerFactory.getLogger(MyApp.class);
    // ...
    new CommandLine(new MyApp())
      .setOut(new LoggerWriter(logger, Level.INFO)
      .setErr(new LoggerWriter(logger, Level.ERROR)
      .execute(args);
    // ...
Run Code Online (Sandbox Code Playgroud)

课堂LoggerWriter灵感就来自这里

picocli

5
推荐指数
0
解决办法
571
查看次数

为什么 picocli 无法识别我在命令行中的选项?

我正在尝试使用 PICOCLI 在 Java 中构建 CLI,但我陷入了一个非常基本的点。我根本无法让我的应用程序向消费者提供一个选项及其价值。这是我的班级:

package com.example.demo;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import picocli.CommandLine;

@SpringBootApplication

@CommandLine.Command(name = "Greet", header = "%n@|green Hello world demo|@")
class DemoApplication implements Runnable {

    @CommandLine.Option(names = {"-u", "--user"}, required = true, description = "The user name.")
    String userName;

    public void run() {
        System.out.println("Hello, " + userName);
    }

    public static void main(String... args) {
        CommandLine.run(new DemoApplication(), System.err, args);
    }
}

Run Code Online (Sandbox Code Playgroud)

然后我做了一个mvn packagecd targetjava -jar demo-1.0.jar Greet -u pico我只遇到了这个:

Unmatched argument at index …
Run Code Online (Sandbox Code Playgroud)

java command-line-interface picocli

5
推荐指数
1
解决办法
4198
查看次数

让 Picocli 与 Springboot 应用程序一起使用

我必须将大型 Spring boot 应用程序转换为灵活的 CLI 工具,其中 Spring boot 应用程序发送的请求(除其他外)由命令行中的用户输入确定。我决定使用 picocli 来实现命令行功能,但是我不知道如何做一些简单的事情,例如如果用户传递给定的选项标志,将一些文本打印到 stdout,Spring boot 只是像平常一样运行。我应该如何写这个以便 picocli 可以与 Spring boot 一起运行(并最终控制所有 Spring boot 的东西)

java spring maven spring-boot picocli

4
推荐指数
2
解决办法
4173
查看次数