【问题标题】:Gradle plugin, how to hook Jacoco agent to jvmGradle 插件,如何将 Jacoco 代理挂接到 jvm
【发布时间】:2013-03-26 09:04:58
【问题描述】:

你好 Gradle 大师! 我正在寻找你丰富的经验和知识:)

我有一个 Gradle 插件,可以将 Jacoco 代理连接到 jvm。目前我的代码如下所示:

Task t = project.allTasks.getByPath(project.getName+":"+"test");
t.jvmArgs = ["-javaagent:"+jacocoAgentJar+"=destfile=" + coverageResultFile.getCanonicalPath()];

这工作正常,但由于不推荐使用动态属性,我想以某种方式摆脱它们。但是...将代码更改为t.ext.jvmArgs = ["-javaagent:"+jacocoAgentJar+"=destfile=" + coverageResultFile.getCanonicalPath()]; 不起作用。

有人可以向我解释一下,如果不使用这个动态属性,我应该如何将 Jacoco 代理挂接到 jvm?

谢谢

【问题讨论】:

  • 尝试使用tasks.withType(Test) { .. },使其不是通用任务类型的动态属性。

标签: gradle jacoco dynamic-properties


【解决方案1】:

如果您在此处收到“动态属性”警告,则您的代码可能有问题,而不仅仅是样式问题。一方面,在这里使用getAllTasks(顺便说一下,它接受一个布尔参数)是不合适的。相反,您应该使用project.tasks.getByName("test"),它可以缩写为project.tasks["test"],甚至可以缩写为project.test。或者,如果你想捕获所有测试任务,project.tasks.withType(Test)

【讨论】:

    【解决方案2】:

    您可以直接在构建文件中配置测试任务,添加如下配置闭包:

    test{
    
      jvmArgs "javaagent:"+jacocoAgentJar+"=destfile=" + overageResultFile.getCanonicalPath()"
    
    }
    

    【讨论】:

      【解决方案3】:

      不是您问题的直接答案,但您可能想查看gradle-jacoco 插件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-08
        • 2019-08-11
        • 2017-05-29
        • 1970-01-01
        • 1970-01-01
        • 2022-07-31
        • 2018-12-18
        • 2015-08-03
        相关资源
        最近更新 更多