もちろん上記の答えはすべてうまくいきますが、それでも私は次のようなものを使いたいです
gradle run path1 path2
これはできませんが、できる場合はどうすればよいでしょうか。
gralde run --- path1 path2
よりエレガントだと思うなら、それを行うことができます。トリックは、gradleが行う前にコマンドラインを処理して変更することです。これは、initスクリプトを使用して行うことができます。
以下のinitスクリプト:
- コマンドラインを処理し、---と '---'に続く他のすべての引数を削除します
- プロパティ「appArgs」をgradle.extに追加します
したがって、実行タスク(またはJavaExec、Exec)では次のことができます。
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
initスクリプトは次のとおりです。
import org.gradle.api.invocation.Gradle
Gradle aGradle = gradle
StartParameter startParameter = aGradle.startParameter
List tasks = startParameter.getTaskRequests();
List<String> appArgs = new ArrayList<>()
tasks.forEach {
List<String> args = it.getArgs();
Iterator<String> argsI = args.iterator();
while (argsI.hasNext()) {
String arg = argsI.next();
// remove '---' and all that follow
if (arg == "---") {
argsI.remove();
while (argsI.hasNext()) {
arg = argsI.next();
// and add it to appArgs
appArgs.add(arg);
argsI.remove();
}
}
}
}
aGradle.ext.appArgs = appArgs
制限:
- 「-」ではなく「---」の使用を余儀なくされました
- グローバルinitスクリプトを追加する必要があります
グローバル初期化スクリプトが気に入らない場合は、コマンドラインで指定できます
gradle -I init.gradle run --- f:/temp/x.xml
または、シェルにエイリアスを追加することをお勧めします。
gradleapp run --- f:/temp/x.xml