2015-06-24 16 views
5

Đây là cấu hình chạy của tôi.Đặt javaagent cho tác vụ cụ thể trong Gradle

task run << { 
    jvmArgs "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar" 
    jettyRun.execute() 
} 

nhưng nó mang lại cho tôi:

Could not find method jvmArgs() 

Làm thế nào để bạn thiết lập javaagent cho jettyRun?

Trả lời

4

Thật không may, Gradle chạy Jetty bên trong JVM riêng của nó, vì vậy bạn không thể đặt javaagent chỉ cho một tác vụ cụ thể. Nó được thiết lập cho toàn bộ JVM. Vì vậy, bạn có hai cách để thực hiện những gì bạn muốn: hoặc bạn chạy Gradle với javaagent được kích hoạt, hoặc bạn sinh ra một quá trình JVM khác và chạy Jetty trong đó.

Giải pháp đầu tiên khá dễ dàng: cung cấp tùy chọn như bình thường. Ví dụ: đặt org.gradle.jvmargs = "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar" trong gradle.properties

Cách thứ hai là khá khó khăn. Bạn không thể chỉ sinh ra JVM mới và nói "chạy nhiệm vụ Gradle" này cho nó. Tôi đoán bạn sẽ cần phải sử dụng Gradle Tooling API để đẻ trứng quá trình mới dựa trên exising bạn xây dựng cấu hình qua GradleConnector:

task run << { 
    ProjectConnection connection = GradleConnector.newConnector().forProjectDirectory(new File("someProjectFolder")).connect(); 

    try { 
     BuildLauncher build = connection.newBuild(); 

     build.setJvmArguments("-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar") 

     build.forTasks("jettyRun").run(); 
    } finally { 
     connection.close(); 
    } 
} 

Như bạn thấy, giải pháp thứ hai là khá xấu xí. Tôi nên chọn cách tiếp cận đầu tiên hơn.

+0

Lỗi tôi với:: không thể giải quyết lớp ProjectConnection ". .. –

+0

Bạn đã thêm 'gradleApi()' vào đường dẫn kịch bản lệnh xây dựng chưa? – madhead

+1

Tùy chọn đầu tiên hoạt động như một sự quyến rũ! – varra

2

Hãy thử với.

nhiệm vụ chạy (loại: JavaExec) < < {...

Vì jvmArgs chỉ được biết đến trong một JavaExec Task.

+0

Nó nói: "Không có lớp chính được chỉ định". phải là jettyRun hoạt động theo cách khác. –

+0

Bạn có thấy Câu hỏi không. Xin lỗi để chỉ cung cấp cho một liên kết http://stackoverflow.com/questions/17999062/sending-an-environment-variable-to-jetty-using-jettyrun-in-gradle –

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