ANTLR4 的最小示例 Gradle 项目(带有 antlr 插件)是什么?

2024-06-18

我创建了新的 Gradle 项目,添加了

apply plugin: 'antlr'

and

dependencies {
    antlr "org.antlr:antlr4:4.5.3"

to build.gradle.

Created src/main/antlr/test.g4包含以下内容的文件

grammar test;
r   : 'hello' ID;
ID  : [a-z]+ ;
WS  : [ \t\r\n]+ -> skip ;

但这不起作用。没有生成java源文件(并且没有发生错误)。

我错过了什么?

项目在这里:https://github.com/dims12/AntlrGradlePluginTest2 https://github.com/dims12/AntlrGradlePluginTest2

UPDATE

我发现我的示例实际上是有效的,但它将代码放入\build\generated-src这是我没想到的:耻辱:


我将在这里添加其他答案。

Issue 1:生成的源文件放在build/generated-src folder.

I found 这次讨论 http://gradle.1045684.n5.nabble.com/How-to-configure-where-antlr-generates-source-files-td3320837.html,但是那里的解决方案(设置outputDirectory属性)是一个bad主意。如果你这样做gradle clean build命令,这将清除你的entire源目录。那里的讨论很好地解释了为什么你不应该

antlr 生成的源被生成为 像所有其他工件一样,是“build”文件夹的子目录,它们是 构建期间生成。此外你生成的目录 projectRoot/build/ generated-src/antlr/main 添加到 java 源集定义以确保其考虑的compileJava任务。 如果将antlr生成的源码直接写入src/main/java 文件夹,您的构建输出污染了源文件夹 过程。 ...在构建过程中污染源文件夹是一种 我认为是反模式。

但是,如果您想这样做,可以添加一个 gradle 任务来将生成的文件复制到构建目录。

generateGrammarSource << {
    println "Copying generated grammar lexer/parser files to main directory."
    copy {
        from "${buildDir}/generated-src/antlr/main"
        into "src/main/java"
    }
}

Issue 2: 生成的源文件没有设置包属性。

要解决此问题,请在语法文件顶部附近添加如下内容:

@header {
package com.example.my.package;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ANTLR4 的最小示例 Gradle 项目(带有 antlr 插件)是什么? 的相关文章

  • 为什么春季测试失败,不起作用@MockBean

    我尝试为一个简单的 spring boot 控制器创建我的第一个测试 但我得到Handler Type null 在浏览器中代码可以工作 但测试失败 我的应用程序使用 spring security 请帮助我解决问题并理解我的错误 谢谢 这
  • JMenuItem:如何设置具有3个键的加速器?

    请看下面的代码 import java awt import java awt event import javax swing public class MenuActions extends JFrame private JMenuBa
  • 没有绑定 play.db.Database 的实现

    我在使用 hikaricp 时访问数据库时遇到问题 这是我的reference conf play modules enabled play api db DBModule enabled play api db HikariCPModul
  • 在 Java 代码中存储加密密钥? [复制]

    这个问题在这里已经有答案了 我正在使用 JASYPT 在我们基于 Java 的软件中对密码进行加密解密 这就是我们加密密码的方法 StrongTextEncryptor textEncryptor new StrongTextEncrypt
  • 如何测试两个 Joda-Time DateTime 对象几乎相等?

    在单元测试中 我经常使用返回DateTime于或关于now 有没有办法说actual日期时间在几秒之内actual约会时间 这听起来是个坏主意 单元测试不应该以任何方式依赖于当前的实际时间 这就是为什么注入一些接口是一个很好的做法 称为Cl
  • PHP 和 ESB(使用 Mule)(ESB:企业服务总线)

    您在 PHP 项目中何时 何地以及为何使用 ESB 您认为在何处 何时以及为何在 PHP 项目中使用 ESB 有意义 ESB 以及像 Mule 这样的 ESB 促进者 是否提供了 PHP 和本地 LAMP 技术所缺乏的任何功能 Edit 我
  • 如何使用 selenium 和 junit 测试多个浏览器(版本)

    我刚刚发现了硒 一个很棒的工具 我计划运行 使用 selenium ide 生成的 junit4 代码 但我需要它与许多浏览器 网络驱动程序一起运行 这个用例有 junit java 模式吗 我的第一个想法是使用 RunWith Param
  • JavaFX 控制器如何访问其他服务?

    我将 JavaFX 2 与 Scala 一起使用 我有class Application extends javafx application Application它执行诸如读取应用程序配置等操作 然后它会启动主窗口 该主窗口需要连接到一
  • 如何解决Spring Data JPA中的N+1问题?

    我使用 Spring Data JPA 作为持久层 并且面临 N 1 问题 我还使用规范 API 因为我发现很难解决 N 1 问题 请帮忙 Entity public class PopulationHealth Id private in
  • 在 IntelliJ IDEA 中编辑并继续?

    使用 IntelliJ IDEA 社区版进行调试时是否可以编辑一些代码 我在选项中找不到这个功能 是的 这就是所谓的 热插拔 您可以在调试过程中编译修改后的代码 并且类文件将被替换 直到您停止调试 确保在调试器设置中启用 HotSwap 选
  • 从 ArrayList HashMap 中获取多个随机值

    我想从 ArrayList 中获取一些特定数字的随机值 final ArrayList
  • Spring:如何将 KeyHolder 与 PostgreSQL 一起使用

    最近迁移到 POSTGRESQL 我试图获取在数据库表中创建新条目时唯一生成的密钥 桌子screenstable看起来像这样 CREATE TABLE screenstable id serial NOT NULL screenshot b
  • Spring Hibernate 4 支持

    我正在使用 Hibernate 4 CR1 我的应用程序之前使用 Spring hibernate 支持 版本 3 我还没有找到任何相关信息 是否有任何迹象表明 Spring 何时 或哪个版本 将提供对 Hibernate 4 的支持 UP
  • 从文件夹中读取java文件

    我开发了一个应用程序 可以从用户选择的文件夹中读取文件 它显示每个文件中有多少行代码 我只想在文件选择器中显示 Java 文件 具有 java 扩展名的文件 下面是我的代码 public static void main String ar
  • Java:如何实现通用二叉搜索树?

    到目前为止 我一直在编写一个 Node 类 class Node private value private Node left private Node right public int getValue return value pub
  • 从 java 反射中隐藏我的安全密钥

    下面的类是我用于加密的安全密钥提供程序 public class MySecretKey private String key 2sfdsdf7787fgrtdfg cj5 Some Util methods goes on Here 首先
  • JarSplice 的命令行参数?

    罐子接头 http ninjacave com jarsplice允许将 jar 文件以及其他依赖项和库聚合到一个可执行 jar 文件中 但是 我的可执行 jar 需要两个命令行参数 当我调用 JarSplice jar 时 这两个参数似乎
  • 使用迭代器时无限循环

    Set key1 map keySet Iterator it1 key1 iterator int cnt 0 while it1 hasNext cnt 这段代码导致无限循环的可能性有多大 实际上这会导致无限循环 我怀疑是因为我没有服用
  • Hibernate 对于 Android 应用程序来说是一种杀伤力吗? [复制]

    这个问题在这里已经有答案了 我正在为我的 Android 应用程序寻找一个好的 ORM 乍一看似乎对于移动设备我更喜欢使用更简单的东西 问题是我只是在这里假设 没有真正的证据 所以我想我应该询问社区的意见 也许有人有过这样的经历 它是一个相
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题

随机推荐

  • 在 Swift 中, ! 是什么意思?函数签名中的符号是什么意思?

    在 Swift 函数签名中 什么是 争论后暗示 更具体地说 这是否意味着参数需要在传入之前解开 或者在传入时 自动 解开 这是一个示例 func annotationButtonTUI sender UIButton 在这种情况下 该函数是
  • 如何使用 PHP 从 Web 根目录外部提供文档?

    为了安全起见 我将一组文件和文件夹移动到 apache 服务器上的 Web 根目录之外 然后动态地为它们提供服务 这似乎比两种选择更好 让它们可以通过网络访问 只需创建一个 php 登录页面 该页面会添加到每个文件的前面 问题是它们并不都是
  • Apache Camel 2.14 Rest DSL 安全

    我想使用 Apache Camel 2 14 中新的 Rest DSL 来创建一个 Rest 接口 我想使用 Jetty 组件 并且我有一个如下所示的基本示例设置 Spring安全配置
  • Angular 2 RC 4“(SystemJS)无法解析[对象位置]的所有参数:”在 IE 11 中

    我的 Web 应用程序在 Chrome Firefox 和 Edge 中运行良好 但在 IE 11 中当然不行 旧版本的 IE 可能也没有 这是一个使用 Angular Cli 生成应用程序的最小应用程序 完整错误 EXCEPTION Ca
  • QuerySelectorAll 不适用于 onclick 事件

    Scenario 我有一些文本输入 我希望它们在单击时具有 500px 的宽度 My code var inputs document querySelectorAll input type text for i 0 i
  • 如何在不复制的情况下获取 std::stringstream 的长度

    如何获取字符串流的字节长度 stringstream str length 会将内容复制到 std string 中 我不想复印 或者 如果有人可以建议另一个在内存中工作的 iostream 可以通过写入另一个 ostream 并且可以轻松
  • Android-使用 ViewHolder 和 AsyncTask 加载联系人-缩略图问题

    我正在创建一个自定义联系人应用程序 我使用带有 ViewHolder 设计模式的 ArrayAdapter 进行优化 由于加载缩略图需要花费大量时间 因此我使用 AsyncTask 类来加载图像 用于第一组联系人我的屏幕上 图片加载得很好
  • 为大金刚风格游戏制作和使用 pygame 精灵

    对于我的项目 我正在 pygame 中重新创建大金刚 我已经到了需要为梯子 平台和角色提供精灵的阶段 但我不确定如何制作精灵 然后在 pygame 中使用它们 这是一个非常基本的使用示例Sprite在 pygame 中 另见Sprite h
  • 使用 API 8 及以上版本获取用户/所有者个人资料联系人 URI 和用户图像

    从 API 14 Android 4 0 起 开始我可以使用ContactsContract Profile CONTENT URI得到手机所有者的联系个人资料 Uri 并通过该信息获取他们的头像 联系照片 我想知道如何从 API 8 An
  • terraform 变量默认值从局部插值

    我有一个用例 我需要两个 AWS 提供商来提供不同的资源 默认aws提供程序在主模块中配置 该模块使用另一个定义附加模块的模块aws提供者 默认情况下 我希望两个提供商使用相同的 AWS 凭证 除非明确覆盖 我想我可以做这样的事情 在主模块
  • Java泛型中类型参数的前向引用

    根据 Java 泛型常见问题解答http www angelikalanger com GenericsFAQ FAQSections TypeParameters html FAQ302 http www angelikalanger c
  • Matplotlib:绘制从x轴到点的线

    我有很多点正在尝试使用 matplotlib 进行绘制 对于每个点 a b 我想在 0 b 中为 Y 绘制直线 X a 知道如何做到这一点吗 Use a stem plot 最不麻烦的解决方案采用matplotlib pyplot stem
  • 让两种口味使用相同的sourceSet

    我有两种风格 demo 和 full 每种风格都有自己的源集在 src demo 和 src full 中 这很好用 我现在想做第三种使用这些源集之一的风格 我该怎么做呢 我尝试过类似的东西 productFlavors full appl
  • nodeJS + Swig 模板将变量传递给 javascript

    有没有办法使用nodeJS的express swig模板将变量从服务器端传递到客户端javascript 我知道这可以在 Jade 中完成 但我宁愿坚持使用更类似于 HTML 的模板引擎 感谢各位的帮助 好的 我假设您可以使用 consol
  • (Emacs) 文本是只读的?

    所以我在 emacs 中工作 突然 slime repl sbcl 说文本是只读的 嗯 这很好 因为现在我无法在其中输入任何内容 我该如何修复 缓冲区是只读的 可以通过以下方式解决C x C q但正如德鲁和菲尔斯所说 文本是只读的 是非常不
  • 获取当前操作和控制器并将其用作 Html.ActionLink 中的变量?

    我需要能够动态检索您所在页面的当前操作和控制器名称 并实际使用它们创建一个新的 HTML ActionLink 链接到相同的操作和控制器名称 但位于不同的区域 所以我想我需要检索当前操作和控制器名称作为变量以用于构建新的 HTML Acti
  • java ResultSet,使用MAX sql函数

    你好 这就是我想要的 我连接到数据库并检索 UniqueId 列的最大元素 并将其分配给名为 maxID 的整数变量 这是我的方法 int maxID 0 Statement s2 con createStatement s2 execut
  • 以给定的纵横比保存绘图

    我正在使用非常棒的库 ggplot2 我想出了如何使用设置绘图的纵横比coord fixed 现在 我想将绘图保存为具有指定宽度 例如 10 厘米 的 PDF 并计算所需的高度 我不知道如何实现这一目标 这可能吗 您可以使用网格函数来计算
  • 如何在 Java 8 中从 CompletableFuture> 获取结果

    Java 8 环境 同时使用 CompletableFuture allOf 运行任务 然后从每个线程获取每个结果 然后将所有结果组合成一个组合结果并返回它 在下面的代码中 要得到结果 List
  • ANTLR4 的最小示例 Gradle 项目(带有 antlr 插件)是什么?

    我创建了新的 Gradle 项目 添加了 apply plugin antlr and dependencies antlr org antlr antlr4 4 5 3 to build gradle Created src main a