簡體   English   中英

Groovy腳本編譯為一個類

[英]Groovy script compiles to a class

從這個答案中 ,我了解到,每個Groovy腳本都編譯為擴展groovy.lang.Script類的類。

以下是在Jenkins編輯器中為Jenkins管道編寫的測試groovy腳本。

node('worker_node'){
    print "***1. DRY principle***"

    def list1 = [1,2,3,4]
    def list2 = [10,20,30,40]

    def factor = 2

    def applyFactor =  {e -> e * factor}

    print(list1.each(applyFactor))
    print(list2.each(applyFactor))



    print "***2. Higher order function***"

    def foo = { value, f ->  f(value *2) }

    foo(3, {print "Value is $it"})

    foo(3){
        print "Value is $it"
    }
}

如何編譯該常規腳本以查看生成的類(源代碼)?

生成的類是字節碼 ,而不是源代碼。 源代碼是Groovy腳本。

如果您希望看到與等效的Java源代碼相似的內容,請像往常一樣使用groovyc編譯腳本,然后使用Java反編譯器生成Java源代碼( 此問題的答案列出了一些)。

當然,這要遵守反編譯代碼的一般警告。 高級信息在編譯過程中會丟失。 反編譯器必須猜測一下,才能找到表示原始源中可能存在的最佳方法。 例如,原始代碼中的for循環可能最終會被反編譯為while循環。

詹金斯管道中的groovy是一種領域特定語言。 這不是一個普通的習慣。

但是,如果刪除node(){ }那么您的情況似乎很糟。

你可以在運行groovyconsole或編譯成類groovyc

只需下載穩定的groovy二進制文件並將其解壓縮即可。

如果您的計算機上裝有java7或java8,則可以運行groovyconsole並在那里嘗試代碼。

使用Ctrl+T您可以看到為腳本生成的實際類代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM