エイリアス

コマンドのエイリアスを定義することができます。これは、コマンドの短いバージョンを作成する場合、または古いコマンドを一時的に保持しながらコマンドの名前を完全に変更する場合に便利です。

エイリアスの形式はコマンドとは少し異なります。コマンドが配列として定義されている場合、単一のコマンドに連結されます。エイリアスが配列として定義されている場合、別のエイリアスを作成するために使用されます。

プレーンな 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() {
	}
}

クラスレベルとメソッドレベルの両方のエイリアスは、これら 2 つを結合します。クラスレベルはプレフィックスとして機能し、メソッドレベルはエイリアスの組み合わせとして機能します。クラスレベルのエイリアスは、通常、エイリアスを同じコマンドレベルに保つためにコマンドプレフィックスと一緒に使用されます。

ここでは、エイリアス 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() {
	}
}