该版本仍在开发中,尚未被视为稳定。最新稳定版本请使用Spring Shell 3.4.1spring-doc.cadn.net.cn

别名

可以为命令定义别。这对于你想创建命令的简短版本或进行完整的命令重命名,同时暂时保留旧的 地方。spring-doc.cadn.net.cn

的格式与命令略有不同。当命令被定义为数组时,它会被串接成一个命令。当别被定义为数组时,它用于创建独立的别名。spring-doc.cadn.net.cn

带有平原的别名指挥注册简单明了,因为你得到你定义的完全一致,因为里面没有“魔法”。spring-doc.cadn.net.cn

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注释则更复杂一些,因为它可以存在于类和方法两个层面。以下是示例 工程。spring-doc.cadn.net.cn

仅仅在某个方法上用别名就给你myaliasspring-doc.cadn.net.cn

@Command
class MyCommands {

	@Command(command = "mycommand", alias = "myalias")
	void myCommand() {
	}
}

或者如果被定义为数组,则是myalias1myalias2spring-doc.cadn.net.cn

@Command
class MyCommands {

	@Command(command = "mycommand", alias = { "myalias1", "myalias2" })
	void myCommand() {
	}
}

仅在类级层面的别名没有任何作用,因为它只是一个指令如果定义了,它就用于方法层级的注释。spring-doc.cadn.net.cn

@Command(alias = "myalias")
class MyCommands {

	@Command(command = "mycommand")
	void myCommand() {
	}
}

类级和方法级的别名将两者结合起来,其中类级作为前缀使用,方法级作为别名的组合。类级的别名通常与命令前缀一起使用以保持别名处于同一命令级。spring-doc.cadn.net.cn

这里你会得到别名 myalias1 myalias2spring-doc.cadn.net.cn

@Command(alias = "myalias1")
class MyCommands {

	@Command(command = "mycommand", alias = "myalias2")
	void myCommand() {
	}
}

在方法层面有一种特殊格式,那就是空字符串,允许你创建别名,但它只使用来自类级别的前缀。spring-doc.cadn.net.cn

这里你会得到别名myalias1spring-doc.cadn.net.cn

@Command(command = "mycommand", alias = "myalias")
class MyCommands {

	@Command(command = "", alias = "")
	void myMainCommand() {
	}

	@Command(command = "mysubcommand", alias = "mysubalias")
	void mySubCommand() {
	}
}