Gradle 从自定义任务中的idl文件读取包含

Gradle 从自定义任务中的idl文件读取包含,gradle,Gradle,我想让我的gradle build在构建模型时变得智能化 为了获得这个,我计划读取模式文件,获取包含的内容,然后构建首先包含的模型(如果它们不存在的话) 我对Groovy和Gradle相当陌生,所以请考虑到这一点 我所拥有的: 根目录上的build.gradle文件,包括n子目录(子项目添加到settings.gradle)。我只有一个gradle构建文件,因为我定义了如下任务: subprojects { task init task includeDependencies(t

我想让我的gradle build在构建模型时变得智能化

为了获得这个,我计划读取模式文件,获取包含的内容,然后构建首先包含的模型(如果它们不存在的话)

我对
Groovy
Gradle
相当陌生,所以请考虑到这一点

我所拥有的:

  • 根目录上的
    build.gradle
    文件,包括n子目录(子项目添加到
    settings.gradle
    )。我只有一个gradle构建文件,因为我定义了如下任务:

    subprojects {
        task init
        task includeDependencies(type: checkDependencies)
        task build
        task dist
        (...)
    } 
    
  • 我将很快返回checkDependencies

  • 架构文件位于外部,我可以看到。 它们中的每一个都有0到3行代码,这些代码表示依赖关系,看起来如下所示:

    #include "ModelDir/ModelName.idl"
    
  • 在我的
    build.gradle
    中,我创建了应该打开的任务,并读取这些依赖项,最好返回它们:

    class parsingIDL extends DefaultTask{
    
        String idlFileName="*def file name*"
    
        def regex = ~/#include .*\/(\w*).idl/
    
        @Task Action
        def checkDependencies(){
            File idlFile= new File(idlFileName)
            if(!idlFile.exists()){
                logger.error("File not found)
            } else {
                idlFile.eachLine{ line ->
                    def dep = []
                    def matcher = regex.matcher(line)
                    (...)*
                }
            }
        }
    }
    
  • 我应该在(…)*中使用什么来查找所有依赖项,以及我应该如何定义,例如

    subprojectA::build.dependsOn([subprojectB::dist, subprojectC::dist])?
    
    我能在互联网上找到的所有创建的dep,输出如下:

    []
    []
    [modelName]
    []
    []
    (...)