原创

gradle中多模块引用

1、rootProject["itext_version"]和 ${versions.kotlin}的区别

在Gradle 构建脚本中,rootProject["itext_version"] 和 ${versions.kotlin} 是两种不同的方式来引用项目属性或变量。

  1. rootProject["itext_version"]:
    这种语法通常用于多项目构建中,rootProject 引用根项目的属性。这里,itext_version 是一个在根项目的 build.gradle 文件中定义的属性,可能是这样定义的:
    ext { itext_version = '7.1.9' }
    在子项目中,你可以通过 rootProject["itext_version"] 来访问这个属性,以确保所有子项目都使用相同的 iText 版本。

  2. ${versions.kotlin}:
    这种语法是 Groovy 的字符串插值语法,用于在字符串中直接引用变量。在这个例子中,versions 很可能是一个在 build.gradle 文件中定义的 Map,其中包含了多个版本号,例如:
    ext { versions = [ kotlin: '1.3.72', // 其他版本定义 ] }
    使用 ${versions.kotlin} 可以在字符串中插入 Kotlin 的版本号。

  3. rootProject.ext.itext_version

    这种写法也是可以获取到对应的配置信息

总的来说,rootProject["property"] 用于访问根项目的属性,而 ${variable} 是 Groovy 语法中的字符串插值,用于从当前项目的上下文中插入变量的值。两者都是为了在 Gradle 脚本中实现可配置和可重用的版本管理。

2、使用注意事项

ext {
    versions = [
            jupiter     : '5.8.1',
            hutoolAll   : '5.8.8',
            lombok      : '1.18.24',
            thanosSdk   : '2.4.7',
            guava       : '19.0',
            log4j       : '2.15.0',
            mandarinBase: '2.9.2',
            feign       : '9.5.0',
            itext       : '2.15.0',
            nacos       : '2.15.0'
    ]

}

配置的key中不能有特殊的连字符,比如.或-

dependencies {
    implementation "com.timevale.thanos:thanos-sdk:${versions.thanosSdk}"
    implementation "com.timevale:mandarin-base:${versions.mandarinBase}"
    implementation "io.github.openfeign:feign-core:${versions.feign}"
    implementation "com.alibaba.nacos:nacos-client:${versions.nacos}"
    implementation "com.itextpdf:kernel:${versions.itext}"
    implementation "com.itextpdf:io:${versions.itext}"
    implementation "com.itextpdf:layout:${versions.itext}"
    implementation "com.itextpdf:forms:${versions.itext}"
    implementation "com.itextpdf:font-asian:${versions.itext}"
    implementation "com.itextpdf:html2pdf:${versions.itext}"

    implementation project(":pangu")
}

使用的时候引用的时候需要加双引号,否则当成普通字符串了,未作解析

// 注意字符串用到 ${var} 的时候,一定要用双引号,这是groovy的语法决定的
正文到此结束
本文目录