別名

可以為命令定義一個別名。這對於建立命令的縮短版本或在完全重新命名命令的同時臨時保留舊版本非常方便。

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

使用簡單的 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() {
	}
}