我在我的项目中使用Gradle.我有一个任务是用我的战争做一些额外的配置.我需要构建一个在我的任务中使用的字符串,比如说,我有:
task extraStuff{
doStuff 'org.springframework:spring-web:3.0.6.RELEASE@war'
}
Run Code Online (Sandbox Code Playgroud)
这很好用.我需要做的是定义版本(实际上已经在属性文件中定义)并在任务中使用它,如:
springVersion=3.0.6.RELEASE
task extraStuff{
doStuff 'org.springframework:spring-web:${springVersion}@war'
}
Run Code Online (Sandbox Code Playgroud)
我的问题是spring版本不被识别为变量.那我怎么能把它传递到字符串里呢?
hzi*_*oun 32
如果您正在使用Gradle开发Android应用程序,要声明变量(即保留一些依赖项版本),您应该使用如下关键字:def
def version = '1.2'
dependencies {
compile "groupId:artifactId:${version}"
}
Run Code Online (Sandbox Code Playgroud)
Giu*_*ero 30
我认为问题可能出在字符串文字分隔符上:
groovy将其用单引号或双引号括起来(例如"3.0.6.RELEASE");Gstrings如果我没记错的话,不会在单引号字符串中解析(单引号'...'或三引号'''...''');所以代码将是:
springVersion = '3.0.6.RELEASE' //or with double quotes "..."
task extraStuff{
doStuff "org.springframework:spring-web:${springVersion}@war"
}
Run Code Online (Sandbox Code Playgroud)
在 android 上,实际上有 2 种可能性如何实现这一点。这真的取决于哪个适合您的需求。这两种可能性各有利弊。您可以使用def变量或ext{}块。变量def很棒,因为它允许您单击变量并准确地指向它在文件中定义的位置,而ext{}块则不指向该确切变量。在另一方面ext{}有一个很好的优势,那就是你可以参考变量project_name/build.gradle,以project_name/app/build.gradle在某些情况下是非常有用的,但因为我,如果你点击这个变量表示可以说只有内只有一个文件,它不会指出来的是,定义变量非常糟糕,因为如果您的依赖项列表增长,它会花费您更多的搜索时间。
1) def 选项,这可能是最好的,可以节省您的搜索时间。
def lifecycle = '2.0.0'
dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:$lifecycle'
}
Run Code Online (Sandbox Code Playgroud)
2) 第二个 ext{} 块。如果依赖项列表不是很大,那还可以。
ext {
lifecycle = '1.1.1'
}
dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:$lifecycle'
}
Run Code Online (Sandbox Code Playgroud)
3) 在某些情况下,如果您想在之间共享变量 project_name/build.gradle 并 project_name/app/build.gradle 使用 ext{}
在project_name/build.gradle你定义kotlin_shared_variable:
buildscript {
ext.kotlin_shared_variable = '1.3.41'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_shared_variable"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在project_name/app/build.gradle 中使用
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_shared_variable"
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以将它们组合起来。
| 归档时间: |
|
| 查看次数: |
37461 次 |
| 最近记录: |