2015-02-19 16 views
11

chcę uruchomić moją metodę main poprzez Gradle zadaniabieg główny metoda z użyciem Gradle "run" zadanie

ten sposób uruchomić poprzez cmd:

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

jak powinna być napisana gradle?

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

Aktualizacja

Próbowałem

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

i mam:

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

i mam błąd:

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) 

ale kiedy uruchomić poprzez IntelliJ, każdy thig działa OK

Odpowiedz

20

Najłatwiej jest prawdopodobnie użyć wtyczki aplikacji. Dodaj apply plugin: 'application' do swojego build.gradle i ustaw mainClassName = com.bla.MainRunner. Aby dodać argumenty do głównej klasy zmodyfikować zadanie uruchomić i edytować właściwości args

run { 
    args += 'first_arg' 
} 

Classpath jest pobierane automatycznie z głównego sourceSet, jeśli chcesz inny, można edytować ścieżce klasy własność zadania wykonywania.

Jeśli potrzebujesz więcej dostosowywania można zdefiniować własne zadanie typu JavaExec jak ten

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

A co, jeśli mam dwie główne metody i chcę, aby zdefiniować inne zadanie dla każdego? "mainClassName" jest przypisywany w zasięgu globalnym? –

+0

to prawdopodobnie lepiej będzie zdefiniować własne zadanie typu JavaExec –

+0

gdzie jest dokumentacja, aby zobaczyć, jakie właściwości ma każdy typ zadania? –

Powiązane problemy