別名
可以為命令定義一個別名。這對於您想要建立命令的較短版本或在完全重新命名命令的同時暫時保留舊命令的情況非常方便。
別名的格式與命令略有不同。當命令定義為陣列時,它會被連線成一個單一的命令。當別名定義為陣列時,它用於建立單獨的別名。
使用純 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() {
}
}