4
Gradleを介してJavaクラスを実行するときにシステムプロパティとパラメータを渡す際の問題
クイック統合テストの一環として、Gradle経由でコマンドラインJavaアプリを実行しようとしています。ビルドスクリプトをMavenから移植していexec-maven-pluginます。これは、を介して簡単に実行できます。私の2つの大きな要件は次のとおりです。 システムプロパティを実行可能なJavaコードに渡すことができる コマンドライン引数を実行可能Javaコードに渡すことができる ビルドスクリプトでこれらのプロパティを読み取ろうとしているのではなく、スクリプトがビルドして実行するJavaプログラムでこれらのプロパティを読み取ろうとしていることに注意してください。 私は2つの他のSOの記事を発見したそのアドレスのJavaプログラムのGradleを経由して実行:支持者が使用していることを答えと1apply plugin: "application"のビルドファイルとgradle runコマンドラインで、そして答えはそのアプローチを提唱だけでなく、使用して別のtask execute(type:JavaExec)ビルドファイルにとgradle executeでコマンドライン。私は両方のアプローチを試しましたが、成功しませんでした。 私には2つの問題があります: (1)Java実行可能ファイルにシステムプロパティを読み取らせることができません 私がこれを行うかどうか: build.gradle: apply plugin: 'application' mainClassName = "com.mycompany.MyMain" コマンドライン: gradle run -Dmyproperty=myvalue またはこれ: build.gradle: task execute (type:JavaExec) { main = "com.mycompany.MyMain" classpath = sourceSets.main.runtimeClasspath } コマンドライン: gradle execute -Dmyproperty=myvalue どちらの場合も、mypropertyそれを通過しません。から実行を開始するコードはMyMain.main (...)、mypropertyシステムプロパティをnull / missingとして読み取ります。 (2)コマンドライン引数を渡すことができません これはおそらく最初の問題に関連しています。exec-maven-plugin例えば、コマンドライン引数は、それ自体がシステムプロパティを介して通過させました。それはGradleの場合ですか、それともコマンドライン引数を渡す別の方法がありますか? これらの変数を取得するにはどうすればよいですか?また、それは良く使用することですapply plugin: 'application'かtask …