gradle - 解析 gradle 脚本时如何使用 Groovy CodeVisitorSupport 访问者类?

标签 gradle groovy

我想用 Java 解析 android 应用程序的 build.gradle 文件,我正在尝试使用 Groovy CodeVistorSupport 来实现它,如下所示:

public class parseBuildGradle extends CodeVisitorSupport{
   @Override
    public void visitMethodCallExpression(MethodCallExpression call)
    {
        //My code
    }
}

为了使用这个类,我假设我应该以某种方式获取编译单元或 ast,然后调用这个类。但是,我不确定应该使用哪些 API,不幸的是我找不到任何相关文档。我想知道是否有人可以帮助我。

最佳答案

以下是我的问题的可能答案:

SourceUnit unit = SourceUnit.create("gradle", gradleFileToString);
unit.parse();
unit.completePhase();
unit.convert();
visitScriptCode(unit, new parseBuildGradle());

private void visitScriptCode(SourceUnit source, GroovyCodeVisitor transformer) {
   source.getAST().getStatementBlock().visit(transformer);
   for (Object method : source.getAST().getMethods()) {
       MethodNode methodNode = (MethodNode) method;
       methodNode.getCode().visit(transformer);
   }
}

关于gradle - 解析 gradle 脚本时如何使用 Groovy CodeVisitorSupport 访问者类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069445/

相关文章:

groovy - Logback.groovy LogstashEncoder 更改字段名称

grails - grails-在查询中使用动态列表

java - 在 gradle 构建期间删除部分代码

grails - 为什么在保存时两次调用Grails中的二传手?

gradle - 使用 gradle 发布自定义 jar 输出?

java - 无法使用 libGDX 设置 android 项目

java - 用于测试的 Scala vs Groovy vs Java

groovy - Groovy 中静态闭包的访问值

Android、Gradle 和版本控制系统

android-studio - Android Studio 不会停止要求更新 Gradle