web-dev-qa-db-ja.com

gradle「実行」タスクを使用してメインメソッドを実行する

Gradleタスクを介してmainメソッドを実行したい

これは私がcmd経由で実行する方法です:

_Java -cp RTMonitor.jar com.bla.MainRunner first_arg_

どのようにそれをgradleで書くべきですか?

_run {
    args += ['Java -cp RTMonitor.jar com.bla.MainRunner first_arg']
}
_

更新

私が試してみました

_task myRun(type: JavaExec) {
    classpath configurations.main
    main = "com.bla.runners.StatsLogGenerator"
    args "arg1", "arg2"
}
_

そして私は得た:

Error:(71, 0) Could not find property 'main' on configuration container.

_the I have tried:
    task myRun(type: JavaExec) {
        classpath "configurations.main"
        main = "com.bla.runners.StatsLogGenerator"
        args "arg1", "arg2"
    }
_

そして、エラーが発生しました:

_FAILURE: Build failed with an exception.
17:49:21.855 [ERROR] [org.gradle.BuildExceptionReporter] 
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':myRun'.
17:49:21.856 [ERROR] [org.gradle.BuildExceptionReporter] > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1
17:49:21.864 [ERROR] [org.gradle.BuildExceptionReporter] 
17:49:21.865 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
17:49:21.866 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':myRun'.
17:49:21.867 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:69)

17:49:21.882 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.Java:361)
17:49:21.882 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.Java:31)
_

しかし、私がIntellij経由で実行すると、すべてのthigは正常に動作します

23
Elad Benda

最も簡単な方法は、おそらくアプリケーションプラグインを使用することです。 build_gradleにapply plugin: 'application'を追加し、mainClassName = com.bla.MainRunnerを設定します。メインクラスに引数を追加するには、実行タスクを変更し、argsプロパティを編集します

run {
  args += 'first_arg'
}

クラスパスはメインのsourceSetから自動的に取得されます。別のクラスセットが必要な場合は、実行タスクのクラスパスプロパティを編集できます。

さらにカスタマイズが必要な場合は、次のようにJavaExecタイプの独自のタスクを定義できます

task myRun(type: JavaExec) {
  classpath sourceSets.main.runtimeClasspath
  main = "com.bla.MainRunner"
  args "arg1", "arg2"
}
37
Tibor Blenessy
task run(type: JavaExec) {
  group = 'Run' // <-- change the name as per your need
  description = 'Small description what this run will do'

  classpath sourceSets.main.runtimeClasspath // <-- Don't change this
  main = "com.mypackage.myclassNameContaingMainMethod"
  args "arg1", "arg2"
}

これは、独立した登録済みタスクであり、タスクのグループと説明、およびその他のプロパティを持つこともできます。

0
Navneet kumar