别名

可以为命令定义别名。这对于想要创建命令的简短版本或在保留旧版本的同时进行完整的命令重命名的情况非常方便。

别名的格式与命令略有不同。当命令定义为数组时,它会被连接成单个命令。当别名定义为数组时,它用于创建单独的别名。

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