别名
可以为命令定义一个别名。这对于您想要创建命令的较短版本或在完全重命名命令的同时暂时保留旧命令的情况非常方便。
别名的格式与命令略有不同。当命令定义为数组时,它会被连接成一个单一的命令。当别名定义为数组时,它用于创建单独的别名。
使用纯 CommandRegistration 的别名简单明了,因为您得到的正是您定义的,其中没有“魔法”。
CommandRegistration commandRegistration() {
return CommandRegistration.builder()
.command("mycommand")
// define alias as myalias
.withAlias()
.command("myalias")
.and()
// define alias as myalias1 and myalias2
.withAlias()
.command("myalias1", "myalias2")
.and()
.build();
}
使用 @Command 注解定义别名会稍微复杂一些,因为它可以在类级别和方法级别同时存在。以下是它如何工作的示例。
仅在方法上使用别名会得到 myalias。
@Command
class MyCommands {
@Command(command = "mycommand", alias = "myalias")
void myCommand() {
}
}
如果定义为数组,则为 myalias1 和 myalias2。
@Command
class MyCommands {
@Command(command = "mycommand", alias = { "myalias1", "myalias2" })
void myCommand() {
}
}
仅在类级别上的别名不会做任何事情,因为它只是如果已定义则在方法级别上的注解的一个指令。
@Command(alias = "myalias")
class MyCommands {
@Command(command = "mycommand")
void myCommand() {
}
}
在类级别和方法级别同时使用别名会将两者结合起来,其中类级别作为前缀,方法级别作为别名的组合。类级别上的别名通常与命令前缀一起使用,以保持别名在同一命令级别。
在这里,您将得到别名 myalias1 myalias2。
@Command(alias = "myalias1")
class MyCommands {
@Command(command = "mycommand", alias = "myalias2")
void myCommand() {
}
}
在方法级别上有一种特殊格式,即空字符串,它允许您创建别名,但它只使用类级别的前缀。
在这里,您将得到别名 myalias1。
@Command(command = "mycommand", alias = "myalias")
class MyCommands {
@Command(command = "", alias = "")
void myMainCommand() {
}
@Command(command = "mysubcommand", alias = "mysubalias")
void mySubCommand() {
}
}