2015-06-24 30 views

Odpowiedz

4

Niestety, Gradle uruchamia Jetty wewnątrz własnej maszyny JVM, więc nie można ustawić javaagent tylko dla określonego zadania. Jest ustawiony dla całej maszyny JVM. Tak więc masz dwa sposoby osiągnięcia tego, co chcesz: albo uruchomisz Gradle z włączoną obsługą javaagent, albo uruchomisz kolejny proces JVM i uruchom w nim Jetty.

Pierwsze rozwiązanie jest dość łatwe: należy zapewnić taką opcję, jak zwykle. Na przykład wstaw org.gradle.jvmargs = "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar" w swój gradle.properties Drugi sposób jest dość trudne. Nie możesz po prostu utworzyć nowej maszyny JVM i powiedzieć "uruchom to zadanie Gradle". Chyba trzeba będzie użyć Gradle Tooling API do tarła nowego procesu opartego na exising build config poprzez 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(); 
    } 
} 

Jak widać, drugie rozwiązanie jest dość brzydki. Lepiej wybierz pierwsze podejście.

+0

Błąd w związku z:: nie można rozwiązać klasy ProjectConnection ". .. –

+0

Dodałeś 'gradleApi()' do ścieżki klasy kompilacji kompilacji? – madhead

+1

Pierwsza opcja działa jak urok! – varra

2

Spróbuj z.

zadanie run (typ: JavaExec) < < {...

Ponieważ jvmArgs jest znana tylko w JavaExec zadanie.

+0

Mówi: "Nie podano głównej klasy". musi być jettyRun działa inaczej. –

+0

Czy widzisz pytanie. Przepraszam, że podaję tylko link http://stackoverflow.com/questions/17999062/sending-an-environment-variable-to-jetty-using-jettyrun-in-gradle –

Powiązane problemy