将常量导入groovy脚本的最佳方法是什么?

时间:2010-10-06 15:43:33

标签: groovy

我一直在使用Groovy设置脚本环境。我有一个名为FrameworkiDatabase.groovy的groovy脚本,它包含一个同名的类。这很好用。我还有另一个名为connections.groovy的文件,其中包含如下地图:

SUPPORT2=[
 host:"host.name", 
 port:"1521", 
 db:"support2",  
 username:"username", 
 password:"password", 
 dbType:"oracle"
]

它包含一组数据库书签,有点像oracle tnsnames文件,所以在连接数据库时我不需要记住所有参数。

使用groovysh时,我可以使用load命令导入它,并且它在当前范围内可用。如何以相同的方式将其作为脚本的一部分加载?它周围没有类定义 - 它需要一个吗?我已经尝试过这样做,并添加静态导入,但这不起作用......

我试过这样的事,但没有运气:

testFrameworkiDatabase.groovy:

import static connections
def db = new FrameworkiDatabase(SUPPORT2)

db.listInvalidObjects()
db.getDBSchemaVersion()
db.getFWiVersion() 
db.getSPVersion()
db.getFileloaderVersion()
db.getAdminToolVersion()
db.getReportsVersion()

所以我想把这些连接作为常量加载 - 有什么方法可以轻松地做到这一点吗?

1 个答案:

答案 0 :(得分:0)

不确定它是否是最佳方式,但有一种方法是将其写入Connections.groovy

class Connections {
  static SUPPORT2 = [
    host:"host.name", 
    port:"1521", 
    db:"support2",  
    username:"username", 
    password:"password", 
    dbType:"oracle"
  ]
}

然后,使用groovyc Connections.groovy编译它以生成类文件

然后,在您的测试脚本或groovysh提示符下,您可以执行以下操作:

import static Connections.*

println SUPPORT2

获得输出:

[host:host.name, port:1521, db:support2, username:username, password:password, dbType:oracle]

如果编译Connections.groovy类不够好,我认为您将考虑使用Groovy embedding techniques <之一将源加载到Binding对象中/ p>