检查是否直接执行Groovy脚本

时间:2018-09-27 18:22:40

标签: groovy

在Python中,通过检查__name__ == '__init__'是否可以检查if a script is being invoked directly

在Groovy中有与此等效的东西吗?

1 个答案:

答案 0 :(得分:1)

我猜最简单的方法是将当前的类名(使用class.simpleName)与实际的执行文件脚本名进行比较 这是一个例子:

让我们在M.groovy文件中创建第一个类:

class M {
    static main(args){
        def m = new M()
    }
    def M(){
        def thisClass = this.getClass().simpleName
        def callingClass = new File(getClass().protectionDomain.codeSource.location.path).name.with{ it.take(it.lastIndexOf('.')) }
        println("thisClass: ${thisClass}, callingClass: ${callingClass}")
        if (thisClass == callingClass){
            println 'Calling from M class...'
        } else {
            println 'Calling from outside.'
        }
    }
}

现在来自外部类,例如T.groovy您可以调用实例化M类:new M()。 当您执行M.groovy时,您会得到:

thisClass: M, callingClass: M
Calling from M class...

,当您运行groovy T.groovy时,您将获得:

thisClass: M, callingClass: T
Calling from outside.

希望这会有所帮助。