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