我试图为项目中的每个子项目生成相同的资产。由于每个子项目必须完全相同,我试图避免将生成代码添加到每个子项目。
到目前为止,我得到的是:
// in my outer build.gradle
allprojects { proj ->
gradle.projectsEvaluated {
def configTemplate = project.file('src/main/templates/configuration.json')
def android = proj.getProperties()['android']
if (configTemplate.exists() && android != null) {
task generateConfigFiles(type: ConfigureTask) {
template configTemplate
environments proj.rootProject.file('scripts/environments.json')
environmentName host
destination new File(project.buildDir, 'templates/configuration.json')
}
android.applicationVariants.all { variant ->
variant.mergeAssets.dependsOn generateConfigFiles
}
}
}
}
// each application build.gradle
android {
sourceSets {
main {
assets.srcDir 'build/templates'
}
}
}
当我从命令行运行gradle ./gradlew mergeQaDebugAssets
运行generateConfigFiles
任务然后运行mergeQaDebugAssets
如果我尝试使用gradle窗口从Android Studio运行此功能,则它永远不会运行generateConfigFiles
我还通过在每个项目projectsEvaluated
文件中加入build.gradle
步骤来使其工作,但是,如上所述,我试图避免代码带来的重复和维护问题。