Java語言可以說它的生態體系是非常完善的,在這個完善的生態體系里面,衍生出Groovy的動態語言。Groovy相比較Java語言而言,
它更加輕量級。Groovy是基於Apache2.0許可協議進行了開源,有着和Python一樣的動態語言特性以及優雅。在該文章體系里面,詳細的
介紹Groovy的環境搭建以及案例的編寫。
到https://groovy.apache.org/download.html下載Groovy的最新版本,依據使用的平台進行下載,本人是基於mac電腦,所以文章中
的案例截圖都是基於mac的平台來進行的。下載最新的版本后,進行解壓,然后加入到環境變量里面。在mac中,環境變量的文件名稱為
.bash_profile,把Groovy加到環境變量的文件里面,內容具體為:
#groovy
export PATH=$PATH:/Applications/devOps/tools/groovy-3.0.2/bin
見如下截圖信息:
然后對文件.bash_profile進行加載,命令為:source .bash_profile。在控制台輸入命令groovy --version,如果環境搭建正確,就會顯示出groovy
的版本信息,如下圖所示:
在控制台輸入groovysh,進入到groovy的命令行里面,如下圖所示:
在如上的截圖信息中,可以看到,我們輸出了學習編程語言最常用的一句話“世界您好!”,同時編寫了一個循環的案例。可以看到,在Groovy的
動態語言里面,循環的輸出是很優雅的。當然對於輸出的部分,可以使用()也可以不使用,總之來說都是可以的,如下圖所示:
下面說明在Init里面創建Groovy的工程,首先打開該IDE后,安裝Groovy的插件,安裝插件的方式其實是非常簡單的,在IDE的plugins里面,輸入
groovy就會搜索到對應的插件,然后安裝成功后重新啟動IDE。如下圖所示:
插件安裝成功后,在Init的IDE里面點擊新建工程,在新建工程的頁面點擊Groovy,如下圖所示:
在如上的截圖中,JDK的版本切記選擇1.8.X的版本,這是因為最新的Groovy只支持1.8的版本,如果選擇的是JDK11以及JDK12,編寫的代碼執行后,就
會出現如下的錯誤信息:
錯誤信息: Information:Groovyc: While compiling groovyStack:java.lang.NoClassDefFoundError: Unable to load class org.apache.groovy.jaxb.extensions.JaxbExtensions due to missing dependency javax/xml/bind/JAXBContext at org.codehaus.groovy.vmplugin.v8.Java8.configureClassNode(Java8.java:458) at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:274) at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:396) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.scan(AbstractExtensionMethodCache.java:116) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.getMethods(AbstractExtensionMethodCache.java:97) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.getMethodsFromClassLoader(AbstractExtensionMethodCache.java:73) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:115) at org.codehaus.groovy.transform.stc.AbstractExtensionMethodCache.get(AbstractExtensionMethodCache.java:51) at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.findMacroMethods(MacroCallTransformingVisitor.java:119) at org.codehaus.groovy.macro.transform.MacroCallTransformingVisitor.visitMethodCallExpression(MacroCallTransformingVisitor.java:90) at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:76) at org.codehaus.groovy.ast.CodeVisitorSupport.visitExpressionStatement(CodeVisitorSupport.java:117) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitExpressionStatement(ClassCodeVisitorSupport.java:200) at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40) at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:164) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) at org.codehaus.groovy.ast.MethodCallTransformation.visit(MethodCallTransformation.java:49) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:336) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:880) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:650) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:627) at org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper.compile(GroovyCompilerWrapper.java:62) at org.jetbrains.groovy.compiler.rt.DependentGroovycRunner.runGroovyc(DependentGroovycRunner.java:108) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.jetbrains.groovy.compiler.rt.GroovycRunner.intMain2(GroovycRunner.java:90) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.runGroovycInThisProcess(InProcessGroovyc.java:157) at org.jetbrains.jps.incremental.groovy.InProcessGroovyc.lambda$runGroovyc$0(InProcessGroovyc.java:76) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835)
關於如上的錯誤信息不再詳細的解釋,點擊next后,填寫工程的名稱,然后點擊Finish,至此Groovy的工程創建完畢。創建后的工程如
下圖所示:
右鍵src,新建Groovy Class,如下圖所示:
創建Index.groovy,編寫如下的代碼:
class Hello { public static void main(String[] args) { println("Hello Groovy!") } }
在IDE中,右鍵點擊Run,執行后就會打印“Hello Groovy!”的信息,如下圖所示:
當然也可以創建groovy的腳本,也是在新建中,點擊Groovy Script,創建的新腳本輸入如下代碼,如下圖所示:
右鍵執行后,輸出如下的信息:
謝謝您的閱讀,后續會逐步的介紹。您也可關注本人的微信公眾號,謝謝!