2015-02-19 23 views
11

Tôi muốn chạy phương pháp main tôi qua nhiệm vụ gradlechạy phương pháp chính sử dụng gradle "chạy" nhiệm vụ

Đây là cách tôi chạy qua cmd:

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

nó như thế nào nên được viết bằng gradle?

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

Cập nhật

Tôi đã thử

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

và tôi đã nhận:

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

và tôi đã nhận một lỗi:

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) 

nhưng khi tôi chạy qua Intellij, mỗi thig hoạt động OK

Trả lời

20

Các đơn giản nhất có lẽ là để sử dụng plugin ứng dụng. Thêm apply plugin: 'application' vào build.gradle của bạn và đặt mainClassName = com.bla.MainRunner. Để thêm đối số cho lớp học chính của bạn thay đổi nhiệm vụ chạy và chỉnh sửa thuộc tính args

run { 
    args += 'first_arg' 
} 

Classpath được lấy tự động từ sourceSet chính, nếu bạn muốn một khác nhau, bạn có thể chỉnh sửa tài sản classpath của nhiệm vụ chạy.

Nếu bạn cần tùy biến hơn, bạn có thể xác định nhiệm vụ của riêng bạn loại JavaExec như thế này

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

và những gì nếu tôi có hai phương pháp chính, và tôi muốn xác định một nhiệm vụ khác nhau cho mỗi? 'mainClassName' được gán trong phạm vi toàn cục? –

+0

thì bạn sẽ có khả năng tốt hơn trong việc xác định nhiệm vụ của riêng bạn về loại JavaExec –

+0

ở đâu tài liệu để xem thuộc tính từng loại tác vụ có? –

Các vấn đề liên quan