編寫
當需要將某些內容寫入控制檯時,始終可以使用 JDK 的 System.out
,它會直接進入 JDK 自己的流。另一種推薦的方法是使用 JLine 的 Terminal
並從那裡獲取*writer*例項。
如果使用目標端點,即不期望返回任何內容的 *consumer*,則給定的 CommandContext
包含對 Terminal
的引用,並且可以從那裡訪問 writer。
CommandRegistration.builder()
.command("example")
.withTarget()
.consumer(ctx -> {
ctx.getTerminal().writer().println("hi");
ctx.getTerminal().writer().flush();
})
.and()
.build();
如果使用 @Command
,您可以訪問 CommandContext
並從中獲取 Terminal
。
@Command
public void example(CommandContext ctx) {
ctx.getTerminal().writer().println("hi");
ctx.getTerminal().writer().flush();
}
可以自動裝配 Terminal
以訪問其 writer。
@Autowired
Terminal terminal;
@ShellMethod
public void example() {
terminal.writer().println("hi");
terminal.writer().flush();
}