gradle中多模块引用
1、rootProject["itext_version"]和 ${versions.kotlin}的区别
在Gradle 构建脚本中,rootProject["itext_version"] 和 ${versions.kotlin} 是两种不同的方式来引用项目属性或变量。
rootProject["itext_version"]:
这种语法通常用于多项目构建中,rootProject 引用根项目的属性。这里,itext_version 是一个在根项目的 build.gradle 文件中定义的属性,可能是这样定义的:
ext { itext_version = '7.1.9' }
在子项目中,你可以通过 rootProject["itext_version"] 来访问这个属性,以确保所有子项目都使用相同的 iText 版本。${versions.kotlin}:
这种语法是 Groovy 的字符串插值语法,用于在字符串中直接引用变量。在这个例子中,versions 很可能是一个在 build.gradle 文件中定义的 Map,其中包含了多个版本号,例如:
ext { versions = [ kotlin: '1.3.72', // 其他版本定义 ] }
使用 ${versions.kotlin} 可以在字符串中插入 Kotlin 的版本号。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的语法决定的