【问题标题】:Setting javaagent for particular task in Gradle在 Gradle 中为特定任务设置 javaagent
【发布时间】:2015-06-24 13:05:53
【问题描述】:

这是我的运行配置。

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

但它给了我:

Could not find method jvmArgs()

jettyRun如何设置javaagent?

【问题讨论】:

    标签: gradle javaagents


    【解决方案1】:

    不幸的是,Gradle 在它自己的 JVM 中运行 Jetty,所以你不能只为特定任务设置 javaagent。它是为整个 JVM 设置的。所以,你有两种方法来完成你想要的:要么运行 Gradle 本身并启用 javaagent,要么生成另一个 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();
        }
    }
    

    如您所见,第二种解决方案非常难看。我最好选择第一种方法。

    【讨论】:

      【解决方案2】:

      试试看。

      任务运行(类型:JavaExec)

      因为 jvmArgs 仅在 JavaExec 任务中是已知的。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2017-06-02
      相关资源
      最近更新 更多