是否可以动态创建源集?

 修成书君4212 发布于 2023-02-09 14:20

我想知道是否可以使用gradle动态创建源集.我当前项目的目录层次结构如下所示:

dbfit-的JUnit

FOO

酒吧

每个模块文件夹(foo和bar)都应分配自己的源集.原因是我想动态创建dbFitTestFoo和dbFitTestBar等任务.我目前的方法如下:

ext.dbFitModulesDir = "dbfit-junit/module"
ext.dbFitTestSpecs = ["java", "groovy", "scala", "resources"]  
ext.dbFitModules = []

file(dbFitModulesDir).eachDir{ module ->
    dbFitModules << module.name
}

/** this needs to be done dynamically for each "module" **/
sourceSets {
    integrationTest { sourceSet ->
        dbFitModules.each{ module ->
            dbFitTestSpecs.each { spec ->
                if (!sourceSet.hasProperty(spec)) {
                    return
                }
                sourceSet."$spec".srcDir file("$dbFitModulesDir/$module/$spec")
            }
        }
    }
}

dbFitModules.each{ module ->
    task "dbFitTest${module.capitalize()}"(type: Test) {
        group = "Verification"
        description = "Run dbFit tests for $module"
        doLast {
            testClassesDir = sourceSets.integrationTest.output.classesDir
            classpath = sourceSets.integrationTest.runtimeClasspath
        }
    }
}

任务的创建工作顺利,唯一仍然缺少的是动态创建和分配源集.

谢谢你的任何提示!

1 个回答
  • 是的,您可以动态创建源集.这是一个例子:

    dbFitModules.each { module ->
        sourceSets.create("${module}Test") {
            ...
        }
    }
    

    2023-02-09 14:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有