You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置build.gradle使./gradlew build自动执行指定终端命令

JavaCC 项目 Gradle 自动构建配置方案

下面直接给出完整配置,只需替换对应参数即可实现执行./gradlew build时自动运行 javacc 生成代码、编译Java文件、执行解析器三个步骤。

完整build.gradle配置(Groovy语法)

plugins {
    id 'java'
}

// ========== 请替换为你项目的实际参数 ==========
// .jj文件的文件名
def jjFileName = "filename.jj"
// 解析器的主类名
def parserClassName = "parsername"
// 存放.jj文件的目录,这里默认放在项目根目录的javacc文件夹下
def jjSourceDir = file("javacc")
// javacc生成的Java代码存放目录
def generatedJavaDir = file("build/generated-sources/javacc")
// ==============================================

repositories {
    mavenCentral()
}

dependencies {
    // 引入javacc依赖,无需本地预安装javacc
    implementation 'net.java.dev.javacc:javacc:7.0.13'
}

// 任务1:调用javacc生成Java代码
task generateJavaFromJavacc(type: JavaExec) {
    doFirst {
        generatedJavaDir.mkdirs()
    }
    classpath = configurations.runtimeClasspath
    mainClass = 'javacc'
    args "${jjSourceDir}/${jjFileName}", "-OUTPUT_DIRECTORY=${generatedJavaDir}"
}

// 将生成的Java代码加入编译源路径
sourceSets {
    main {
        java {
            srcDir generatedJavaDir
        }
    }
}

// 编译Java任务依赖代码生成任务,保证生成代码后再编译
compileJava.dependsOn generateJavaFromJavacc

// 任务2:执行编译后的解析器
task runParser(type: JavaExec) {
    dependsOn compileJava
    classpath = sourceSets.main.output
    mainClass = parserClassName
    // 若解析器需要传参,可取消下面注释替换为实际参数
    // args "param1", "param2"
}

// 把解析器运行任务绑定到build生命周期,执行build时自动运行所有步骤
build.dependsOn runParser

注意事项

  • 你需要将自己的.jj文件放到配置中jjSourceDir指定的目录下,默认是项目根目录的javacc文件夹
  • 如果你的本地已经预安装了javacc且不想通过依赖引入,可以把generateJavaFromJavacc任务替换为Exec类型,直接调用本地javacc命令即可
  • 如果需要调整javacc的生成参数,可以在generateJavaFromJavacc任务的args中添加对应参数,比如设置静态分析、语法检查等级等

内容的提问来源于stack exchange,提问作者Nikita Fernando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:54:03