首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Gradle构建脚本中使用变量

在Gradle构建脚本中使用变量
EN

Stack Overflow用户
提问于 2016-01-08 11:24:26
回答 4查看 99.8K关注 0票数 75

我在我的项目中使用Gradle。我的任务是在我的战争中做一些额外的配置。我需要构建一个字符串来用于我的任务,比如,让我说我有:

代码语言:javascript
运行
复制
task extraStuff{
    doStuff 'org.springframework:spring-web:3.0.6.RELEASE@war'
}

这个很好用。我需要做的是定义版本(实际上已经在属性文件中定义),并在任务中使用它,如下所示:

代码语言:javascript
运行
复制
springVersion=3.0.6.RELEASE

task extraStuff{
    doStuff 'org.springframework:spring-web:${springVersion}@war'
}

我的问题是,spring版本不被认为是可变的。那我怎么能把它传递到字符串里呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-08 11:35:18

我认为问题可能在于字符串文字分隔符:

  1. 字符串文本的定义与groovy完全一样,因此将其括在单引号或双引号中(例如,"3.0.6.RELEASE");
  2. 如果我没记错的话,Gstrings没有用单引号(包括单引号或三重引号)进行解析;

所以代码是:

代码语言:javascript
运行
复制
springVersion = '3.0.6.RELEASE' //or with double quotes "..."

task extraStuff{
    doStuff "org.springframework:spring-web:${springVersion}@war"
}
票数 49
EN

Stack Overflow用户

发布于 2017-11-13 16:15:24

如果您正在使用def Gradle开发Android应用程序,您可以声明一个变量(即保存依赖版本),这要归功于关键字,如下所示:

代码语言:javascript
运行
复制
def version = '1.2'
    
dependencies {
  compile "groupId:artifactId:${version}"
}

希望能帮上忙!

票数 95
EN

Stack Overflow用户

发布于 2019-07-10 11:16:18

在android上,实现这一目标实际上有两种可能性。这取决于哪一个适合你的需要。这两种可能性各有优缺点。您可以使用def变量或ext{}块。变量def很棒,因为它允许您单击变量,并与未指向该确切变量的ext{}块相比,它准确地指向文件中定义的变量的位置。另一方面,ext{}有一个好的优点,那就是您可以将变量从project_name/build.gradle引用到project_name/app/build.gradle,这在某些情况下非常有用,但正如我所说的,如果您单击该变量,我们只在一个文件中说明,它将不会指出该变量的定义,这是非常糟糕的,因为如果依赖列表增长,则需要更多的搜索时间。

1) def选项,它可能是最好的,并且可以节省搜索时间.

代码语言:javascript
运行
复制
def lifecycle = '2.0.0'

dependencies {
    implementation 'androidx.lifecycle:lifecycle-extensions:$lifecycle'
}

2)第二个ext{}块。如果依赖列表不是很大的话,这是可以的。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
buildscript {
    ext.kotlin_shared_variable = '1.3.41'

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_shared_variable"
    }
}

您可以在project_name/app/build.gradle中使用

代码语言:javascript
运行
复制
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_shared_variable"
}

当然你可以把它们结合起来。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34675914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档