我在我的项目中使用Gradle。我的任务是在我的战争中做一些额外的配置。我需要构建一个字符串来用于我的任务,比如,让我说我有:
task extraStuff{
doStuff 'org.springframework:spring-web:3.0.6.RELEASE@war'
}这个很好用。我需要做的是定义版本(实际上已经在属性文件中定义),并在任务中使用它,如下所示:
springVersion=3.0.6.RELEASE
task extraStuff{
doStuff 'org.springframework:spring-web:${springVersion}@war'
}我的问题是,spring版本不被认为是可变的。那我怎么能把它传递到字符串里呢?
发布于 2016-01-08 11:35:18
我认为问题可能在于字符串文字分隔符:
groovy完全一样,因此将其括在单引号或双引号中(例如,"3.0.6.RELEASE");Gstrings没有用单引号(包括单引号或三重引号)进行解析;所以代码是:
springVersion = '3.0.6.RELEASE' //or with double quotes "..."
task extraStuff{
doStuff "org.springframework:spring-web:${springVersion}@war"
}发布于 2017-11-13 16:15:24
如果您正在使用def Gradle开发Android应用程序,您可以声明一个变量(即保存依赖版本),这要归功于关键字,如下所示:
def version = '1.2'
dependencies {
compile "groupId:artifactId:${version}"
}希望能帮上忙!
发布于 2019-07-10 11:16:18
在android上,实现这一目标实际上有两种可能性。这取决于哪一个适合你的需要。这两种可能性各有优缺点。您可以使用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'
}2)第二个ext{}块。如果依赖列表不是很大的话,这是可以的。。
ext {
lifecycle = '1.1.1'
}
dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:$lifecycle'
}( 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"
}
}您可以在project_name/app/build.gradle中使用
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_shared_variable"
}当然你可以把它们结合起来。
https://stackoverflow.com/questions/34675914
复制相似问题