这是我的跑步配置。
task run << {
jvmArgs "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar"
jettyRun.execute()
}
但它给了我:
Could not find method jvmArgs()
如何为jettyRun设置javaagent?
答案 0 :(得分:4)
不幸的是,Gradle在其自己的JVM中运行Jetty,因此您无法仅为特定任务设置javaagent。它是为整个JVM设置的。因此,您有两种方法可以实现您的目标:要么在启用javaagent的情况下运行Gradle,要么生成另一个JVM进程并在其中运行Jetty。
第一种解决方案非常简单:像往常一样提供选项。例如,将org.gradle.jvmargs = "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar"
放入gradle.properties
第二种方式很难。你不能只生成新的JVM并说“运行这个Gradle任务”。我想您需要使用Gradle Tooling API根据您通过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();
}
}
如你所见,第二种解决方案非常难看。我最好选择第一种方法。
答案 1 :(得分:2)
试试。
任务运行(类型:JavaExec)&lt;&lt; {...
因为jvmArgs只在JavaExec Task中已知。