別名

可以為命令定義別名。當您想要建立較短版本的命令,或是在完整命令重新命名時,暫時保留舊命令時,這會很方便。

別名的格式與命令略有不同。當命令定義為陣列時,它會串連在一起成為單一命令。當別名定義為陣列時,它會用於建立個別的別名。

使用純 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() {
	}
}

或者,如果定義為陣列,則為 myalias1myalias2

@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() {
	}
}