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