为什么我不能在 Groovy 脚本中的 @Grab 声明之后执行方法调用?

2024-01-04

我正在尝试构建一个 DSL 并使用 Global AST Transform 来完成它。该脚本正在编译groovyc很好,但我希望能够让用户使用 Grab/Grape 来提取 JAR,并让它作为常规脚本立即执行。

然后我发现我无法正确执行此操作,因为如果 @Grab 调用后没有方法声明或导入语句,则脚本中会出现解析错误。

这是一个例子:

@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')

println "Hello World!"

看起来应该可以工作,但它抱怨(这是输出GroovyConsole 脚本 http://groovyconsole.appspot.com/edit/467003):

startup failed:
Script1.groovy: 4: unexpected token: println @ line 4, column 1.
   println "hello"
   ^

1 error

尝试不同的东西让它起作用,比如 import 语句:

@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
import groovy.lang.Object
println "Hello World!" ​

或者方法声明:

@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
def hello() {}
println "Hello World!"

这是解析器中的错误吗? ​


Grab 只能作为对某些目标进行注释 http://groovy.codehaus.org/api/groovy/lang/Grab.html

@Target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PARAMETER,TYPE})

所以你需要注释其中一件事情(就像你所看到的)

不幸的是,在 Java(以及 Groovy)中,注释不可能出现在代码中间。

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

为什么我不能在 Groovy 脚本中的 @Grab 声明之后执行方法调用? 的相关文章

  • \add_34/U1_1_6 的 Verilog 命名约定

    有人可以解释一下这个命名约定在下面的 Verilog 行中意味着什么吗 我不知道这是什么 add 34 部分的意思是 ADDHXL add 34 U1 1 6 A n1022 B add 34 carry 6 CO add 34 carry
  • 执行Jenkinsfile时如何获取管道配置字段“脚本路径”?

    如何从 Jenkinsfile groovy 获取 Jenkins 中管道配置字段 脚本路径 的内容 在此示例中 我想在执行 Jenkinsfile 本身时获取字符串 Apps mq logger Jenkinsfile 您可以通过这种方式
  • Haskell 点运算符

    我尝试在 Haskell 中开发一个简单的平均函数 这似乎有效 lst 1 3 x fromIntegral sum lst y fromIntegral length lst z x y 但是为什么下面的版本不行呢 lst 1 3 x f
  • 什么是{| ... |} 在 JavaScript 中是什么意思? [复制]

    这个问题在这里已经有答案了 通读 javascript 代码库 我遇到了如下代码块 export type RouteReducerProps error Error isResolving boolean isResolved boole
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • to_proc 方法在 Ruby 中意味着什么?

    我正在学习 Rails 并关注这个线程 https stackoverflow com questions 1961030 我被困住了to proc方法 我认为符号只是字符串的替代品 它们就像字符串 但在内存方面更便宜 如果我还缺少任何其他
  • 为什么 GORM 不保存我的对象?

    如果我在 Grails 控制台中执行此代码 def p new Post title T p save flush true or p save Post count GORM 没有抛出任何异常 但数据没有保存在我的数据库中 我究竟做错了什
  • 带数组的双美元变量

    我正在尝试使用双美元语法访问数组的第一项 但它无法按照我想要的方式工作
  • Grails GORM 和枚举

    我在 Grails 中使用枚举时遇到问题 我尝试在 grails 域对象中使用枚举 code package it xxx tools kanban import java util Date class Task String name
  • Linux/Ubuntu 目录位置 ~/.vim/syntax/

    文件夹的默认位置在哪里 vim syntax 在Linux系统上 我正在尝试添加一个 Python 插件 您正在寻找 runtimepath 选项 该文档非常详细 使用 help runtimepath 但我会尝试在这里总结一下 The 运
  • 判断字符串是否包含有效的javascript代码

    我正在寻找一个C 返回的函数true如果字符串包含有效的 JavaScript 语法 例如 IsValidJavascript alert hello 会回来true but IsValidJavascript alertXXhelloZ
  • 包含重复键的字典文字是否定义良好?

    如果我写d 0 1 0 2 Python 是否保证d 0 或者是 未定义的行为 当然 这不是你想要的ever编程时写的 不过这个问题大多是出于好奇 在本地 它似乎总是保存与该键最后一次出现关联的值 即2这里 不过 对于一些奇怪的代码生成情况
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • JavaScript 中的小数点分隔符是什么?

    当我正在编写一段处理一些浮点值的 JavaScript 代码时 我突然想到了一个想法 JavaScript 中的小数点符号是什么 是不是总是 或者它是特定于文化的 那么呢 toFixed and parseFloat 如果我正在处理用户输入
  • Some() 在变量赋值的左侧做什么?

    我正在阅读一些 Rust 代码 并且遇到了这一行 if let Some path env args nth 1 这个函数内部 fn main if let Some path env args nth 1 Try reading the
  • 如何迭代 Bash 中变量定义的数字范围?

    当范围由变量给出时 如何在 Bash 中迭代数字范围 我知道我可以做到这一点 在 Bash 中称为 序列表达式 文档 http www gnu org software bash manual bashref html Brace Expa
  • 使用 Groovy 将文件从一个文件夹复制到另一个文件夹

    new AntBuilder copy todir destinationDir fileset dir sourceDir 我已使用上面的代码将文件从源文件夹复制到目标文件夹 它在 grails 2 3 0 上运行良好 现在将 grail
  • 使用 TypeScript API 查找 TypeReference 类型

    我试图找到一个类型 类 接口 类型别名 枚举 TypeReference 我有这个 const anode node as ts TypeReferenceNode const symbol this typechecker getSymb
  • 不带破折号的 CliBuilder 参数

    使用 Groovy CliBuilder 理想情况下我希望有一个命令行 如下所示 MyProgram groovy CommandName arg1 arg2 arg3 是否可以使用 CliBuilder 解析提取 CommandName
  • Grails(现在)值得吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道这是一个复制 https stackoverflow com questions 397228 is grails worth it然而

随机推荐