【问题标题】:Gradle and Plugin shenanigans, for multi-module buildsGradle 和插件恶作剧,用于多模块构建
【发布时间】:2020-12-03 05:23:53
【问题描述】:

所以我有一个多模块项目,它使用 gradle 构建了很多东西,包括一些 AWS Lambda、一个 Java(Spring Boot)微服务和一个 ReactJS webapp。

为此,我想生成一些 Jacoco 代码覆盖率报告以掌握最新情况。所以目前我有这个:

subprojects {
    apply plugin: 'jacoco'

    plugins.withType(JavaPlugin) {
        jacoco {
            toolVersion = "0.8.5"
        }
    }
}

哪个“有效”。但是,如果我将其更改为:

subprojects {
    plugins.withType(JavaPlugin) {
        apply plugin: 'jacoco'

        jacoco {
            toolVersion = "0.8.5"
        }
    }
}

Gradle 在尝试构建第一个 Java 项目时 hard 失败。我的意思是我并不介意,您必须将 jacoco 插件应用于其中没有任何 Java 代码的子项目,这真的很奇怪。有人吗?

【问题讨论】:

    标签: java gradle plugins jacoco multi-module


    【解决方案1】:

    参见文档https://docs.gradle.org/current/userguide/plugins.html中的示例 3(仅在某些子项目上应用插件)

    即在你的情况下:

    plugins {
      id 'jacoco' version '1.0.0' apply false
    }
    
    subprojects {
      if (name.startsWith('myjacostuff')) {
        apply plugin: 'jacoco'
      }
    
      plugins.withType(JavaPlugin) {
        jacoco {
          toolVersion = "0.8.5"
        }
      }
    }
    

    【讨论】:

    • 谢谢。声明式和命令式代码有点奇怪。但我想没关系。
    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多