====== Groovy ======
* http://groovy-lang.org
* [[http://groovy.codehaus.org/Runtime+vs+Compile+time,+Static+vs+Dynamic|Groovy Runtime vs Compile time, Static vs Dynamic]]
===== 설치 GVM =====
* [[sdkman|sdkman]]
===== Source Encoding =====
* ''groovy.source.encoding'' 시스템 프라퍼티값
* 그게 없으면 ''file.encoding'' 시스템 프라퍼티 값
*
export JAVA_OPTS="-Dgroovy.source.encoding=UTF-8"
===== CLASSPATH =====
* Java 6이상에서 특정 디렉토리 이하의 *.jar를 모두 추가하고자할 때 ''groovy -cp "lib/*''는 통하지 않았다. **CLASSPATH** 환경변수에 설정하면 잘 됐음.
===== 객체 정보 확인 =====
* ''groovy.inspect.swingui.ObjectBrowser.inspect(obj)'' : obj 의 정보를 Swing UI로 보여준다.
* ''obj.metaClass.metaMethods.name'' : GDK에서 동적으로 추가된 메소드 이름 목록
* ''obj.class.methods.name'' : 객체의 메소드 이름 목록
* ''obj.class.fields.name'' : 객체의 필드 목록
===== groovysh =====
* http://groovy.codehaus.org/Groovy+Shell
* Cygwin에서 멈춰버리는 문제 발생시 ''groovysh --terminal=unix''로 실행해보자.
===== groovy-all.jar 로 실행 =====
* groovy 배포본을 설치하지 않고 java 애플리케이션 의존성에 있는 ''groovy-all-[version].jar''로 groovy 스크립트를 실행할 수 있다.
* ''groovy.ui.GroovyMain''이 groovy 스크립트를 실행하는 클래스이다.
java -cp /path/to/groovy-all-[version].jar:another-jars groovy.ui.GroovyMain groovyscript.groovy
===== GroovyConsole =====
* Windows에서는 다음과 같이 만들어 실행하면 콘솔 없이 실행 된다. [[windows:bat|Windows Batch File]]
* ''groovyconsole.vbs''
Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("groovyconsole.bat", 0)
set WshShell = Nothing
* Powershell 이용하기 TODO
powershell start-process 'groovyconsole.bat' -WindowStyle Hidden
===== 다른 스크립트 파일 include =====
* 원칙적으로 그루비는 다른 스크립트를 include할 수 없다. Java Class 구조를 사용해서 import를 해야한다.
* 하지만 ''evauleate''를 통해서 억지로 할 수는 있다. [[http://stackoverflow.com/questions/9136328/including-a-groovy-script-in-another-groovy|Including a groovy script in another groovy]]
evaluate(new File("another.groovy"))
===== invoke dynamic =====
* [[http://groovy-lang.org/indy.html|InvokeDynamic Support]]
===== 참고자료 =====
* [[https://leanpub.com/groovytutorial/read|Groovy 2 Tutorial]]
* [[http://mrhaki.blogspot.kr/2012/10/groovy-goodness-using-project-coin.html|Groovy Goodness: Using Project Coin Features Also With Older Java Versions]]
* [[http://weblogs.java.net/blog/driscoll/archive/2012/10/01/dsls-groovy|DSLs in Groovy]] Groovy로 DSL 만드는 방법.
* [[http://mrhaki.blogspot.kr/2012/10/groovy-goodness-drop-or-take-elements.html|Groovy Goodness: Drop or Take Elements with Condition]]
* [[http://stackoverflow.com/questions/303512/hidden-features-of-groovy|Hidden Features of groovy]]
* [[http://javaone2012.tumblr.com/post/34242703711/groovy-ecosystem|Groovy Ecosystem]]
* [[https://github.com/kdabir/awesome-groovy|Awsome Groovy]]
* [[http://mrhaki.blogspot.kr/|Groovy Goodness]]
* [[https://examples.javacodegeeks.com/jvm-languages/groovy/groovy-script-tutorial-beginners/|Groovy Script Tutorial for Beginners | Examples Java Code Geeks - 2016]]
* [[http://www.tutorialspoint.com/groovy/|Tutorial Point Groovy Tutorial]] : 좋지않음. 굳이 볼필요없음.
* [[http://blog.cacoethes.co.uk/groovyandgrails/groovy-in-light-of-java-8|Groovy in light of Java 8 | Peter Ledbrook]]
* [[https://www.youtube.com/watch?v=0b2zWND2k2Y|Joint Compilation in Groovy -The bad, the good and the bright future - YouTube]]
* [[http://melix.github.io/s2gx-deepdive-groovy-compiler/|Deep dive into the Groovy compiler]]
* [[https://www.baeldung.com/groovy-java-applications|Integrating Groovy into Java Applications | Baeldung]]
* [[https://www.javacodegeeks.com/2020/12/groovy-script-101-commonly-used-syntax-reference-guide.html|Groovy Script 101 - Commonly Used Syntax Reference Guide | Java Code Geeks - 2020]]