Запустить основной метод с помощью gradle задачи "запустить"

Я хочу запустить мой метод main с помощью gradle task

Вот как я запускаю через 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, каждый тэг работает нормально

Ответ 1

Самый простой способ - использовать плагин приложения. Добавьте apply plugin: 'application' в свой build.gradle и установите mainClassName = com.bla.MainRunner. Чтобы добавить аргументы в ваш основной класс, измените задачу выполнения и отредактируйте свойство args

run {
  args += 'first_arg'
}

Путь к классам берется автоматически из основного источника, если вы хотите другого, вы можете изменить свойство classpath задачи выполнения.

Если вам нужна дополнительная настройка, вы можете определить свою собственную задачу типа JavaExec, как это

task myRun(type: JavaExec) {
  classpath sourceSets.main.runtimeClasspath
  main = "com.bla.MainRunner"
  args "arg1", "arg2"
}