4

以下 groovy 脚本使用命令行失败

@Grab("org.apache.poi:poi:3.9")
println "test"

错误:

unexpected token: println @ line 2, column 1.
  println "test"
  ^
1 error

删除Grab,它的工作原理!我错过了什么?

$>groovy -v
Groovy Version: 2.1.7 JVM: 1.7.0_25 Vendor: Oracle Corporation OS: Linux
4

2 回答 2

9

注释只能应用于某些目标。请参阅SO:为什么我不能在 Groovy 脚本中的 @Grab 声明之后执行方法调用?

@Grab("org.apache.poi:poi:3.9")
dummy = null
println "test"

或者,您可以使用 grab 作为方法调用:

import static groovy.grape.Grape.grab
grab(group: "org.apache.poi", module: "poi", version: "3.9")
println "test"

有关更多信息,请参阅Groovy 语言文档 > 使用 Grape 进行依赖管理

于 2013-09-18T08:09:32.127 回答
0

文件“Grabber.groovy”

package org.taste

import groovy.grape.Grape

//List<List[]> artifacts => [[<group>,<module>,<version>,[<Maven-URL>]],..]
static def grab (List<List[]> artifacts) {
    ClassLoader classLoader = new groovy.lang.GroovyClassLoader()
    def eal = Grape.getEnableAutoDownload()
    artifacts.each { artifact -> {
            Map param = [
                classLoader: classLoader, 
                group : artifact.get(0),
                module : artifact.get(1),
                version : artifact.get(2),
                classifier : (artifact.size() < 4) ? null : artifact.get(3)
            ]
            println param
            Grape.grab(param) 
        }
    }
    Grape.setEnableAutoDownload(eal)
}

用法 :

package org.taste
import org.taste.Grabber

Grabber.grab([
    [ "org.codehaus.groovy.modules.http-builder", "http-builder", '0.7.1'],
    [ "org.postgresql", "postgresql", '42.3.1', null ],
    [ "com.oracle.database.jdbc", "ojdbc8", '12.2.0.1', null]
])
于 2021-12-17T13:56:45.693 回答