web-dev-qa-db-fra.com

exécuter la méthode principale en utilisant la tâche "run" de gradle

Je veux exécuter ma méthode main via une tâche gradle

Voici comment je cours via la cmd:

Java -cp RTMonitor.jar com.bla.MainRunner first_arg

comment faut-il l'écrire en gradle?

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

Mise à jour

J'ai essayé

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

et j'ai eu:

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"
    }

et j'ai une erreur:

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)

mais quand je cours via Intellij, chaque thig fonctionne bien

23
Elad Benda

Le plus simple est probablement d'utiliser le plugin d'application. Ajouter apply plugin: 'application' à votre build.gradle et définissez mainClassName = com.bla.MainRunner. Pour ajouter des arguments à votre classe principale, modifiez la tâche d'exécution et modifiez la propriété args

run {
  args += 'first_arg'
}

Le chemin de classe est extrait automatiquement de sourceSet principal, si vous en voulez un autre, vous pouvez modifier la propriété de chemin de classe de la tâche d'exécution.

Si vous avez besoin de plus de personnalisation, vous pouvez définir votre propre tâche de type JavaExec comme ceci

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"
}

Il s'agit d'une tâche enregistrée indépendante et peut également avoir un groupe, une description et d'autres propriétés de tâche.

0
Navneet kumar