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.
Błąd w związku z:: nie można rozwiązać klasy ProjectConnection ". .. –
Dodałeś 'gradleApi()' do ścieżki klasy kompilacji kompilacji? – madhead
Pierwsza opcja działa jak urok! – varra