====== 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]]