Picocli:需要某些参数

问题描述

使用 picocli 是否可以实现以下功能

有效:

  • -A (-B | -C)

  • -D (-B | -C) [(-B | -C) ...]

(-A / -D 不是必需的)

无效:

  • -B 不带 -A 或 -D

  • -C 不带 -A 或 -D

  • -A 与 -B 和 -C

  • -D 与 -B 和 -C

  • -A 没有 (-B | -C)

  • -D 不带 (-B | -C)

谢谢!

解决方法

应该可以使用 picocli 的 argument groups 来实现:

[(-A |-D) (-B | -C) [(-B | -C) ...]]

... 通过为 -A 和 -D 创建一个互斥组,并为 -B 和 -C 创建另一个互斥组(具有多重性 1..*),并创建这两个组的复合组是相互依赖的。由于不需要 -A 和 -D,因此该复合组的多重性将为 0..1