首页 文章

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

提问于
浏览
2

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

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

    不确定它是否是 best 方式,但一种方法是将其写入 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 类isn 't good enough, I think you'将要查看使用Groovy embedding techniques之一将源加载到 Binding 对象中

相关问题