检查Groovy脚本是否直接执行

3
在Python中,可以通过检查__name__ == '__init__'来检查脚本是否直接调用
在Groovy中是否有类似的功能?
1个回答

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.

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接