别名
可以为命令定义一个 别名。这在你想创建命令的简短版本或在进行完整命令重命名的同时暂时保留旧命令的情况下非常方便。
alias 的格式与 command 略有不同。当 command 被定义为一个数组时,它会被连接成一个单一的命令。当 alias 被定义为一个数组时,它会被用来创建单独的别名。
使用简单的 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() {
}
}
类级别和方法级别的别名将这两者结合在一起,其中类级别作为前缀,方法级别作为别名的组合。类级别的别名通常与 command 前缀一起使用,以保持别名在同一命令级别上。
这里你会得到别名 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() {
}
}