gpt4 book ai didi

java - 在构建期间无法使 gradle 任务在 Java 中传递值

转载 作者:行者123 更新时间:2023-11-29 22:58:57 25 4
gpt4 key购买 nike

所以我有一个任务读取文件并将其值传递到 BuildConfig 类中传递的属性中,以便可以通过 Android Studio 中的 Java 类访问它。当我单独运行任务时,它会打印出从文件中获取的读取值。但是,当我按下“运行”来运行我的应用程序时,该属性的值在 BuildConfig 中保持默认值,就像任务从未运行过一样。

在项目的 build.gradle 中:

task testVariableInsertion() {
doLast {
File file = file('.gitignore')
println domainName
domainName = file.text;
println domainName;
project.logger.info('task runned NOW!!!!!!!!!!!!!')
}
}

在模块“app”的 build.gradle 中:

android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.testingproject"
minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
buildConfigField "String", "DOMAIN_NAME", "${domainName}"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

期待 gradle 会自动运行任务,这似乎是因为如果我在构建后键入“gradlew --info”,我会收到日志消息。是因为它读取文件并且在读取完成时值已经传递到 BuildConfig 中了吗?我错过了什么?

最佳答案

几天前找到了答案,为了让它工作,我必须这样定义我的任务:

def testVariableInsertion = {
File file = file('.gitignore')
println domainName
domainName = file.text;
println domainName;
project.logger.info('task runned NOW!!!!!!!!!!!!!')
}

并在下面调用它

testVariableInsertion()

我在“ext”括号内还有我的变量域名

ext {
domainname = "defaultValue"
}

然后在app模块的defaultConfig中:

buildConfigField "String", "DOMAIN_NAME", rootProject.ext.domainName

关于java - 在构建期间无法使 gradle 任务在 Java 中传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57131540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com