Đôi khi làm việc với các ứng dụng Java, các bạn sẽ có nhu cầu sử dụng Groovy code để giải quyết bài toán của mình. Trong những trường hợp này, các bạn sẽ cần phải compile code Groovy để nó có thể chạy cùng với code Java của ứng dụng. Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt và sử dụng Groovy Eclipse Maven plugin để làm điều này.
Đầu tiên, mình sẽ tạo mới một Maven project để làm ví dụ:
Để viết code Groovy trong ứng dụng Java, các bạn nên tạo mới 2 thư mục là src/main/groovy dành cho code của ứng dụng và src/test/groovy dùng để test code Groovy như sau:
và cài đặt Groovy Development Tools từ Eclipse Marketplace:
Để compile code Groovy, chúng ta cần thay đổi compiler mà mặc định Maven Compiler plugin sử dụng (javac) qua Groovy Eclipse Compiler:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <compilerId>groovy-eclipse-compiler</compilerId> <source>1.8</source> <target>1.8</target> </configuration> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-compiler</artifactId> <version>3.4.0-01</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-batch</artifactId> <version>2.5.8-01</version> </dependency> </dependencies> </plugin> |
và khai báo Groovy dependency như sau:
1 2 3 4 5 |
<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.5.8</version> </dependency> |
Lúc này nếu các bạn viết một class bằng Groovy trong thư mục src/main/groovy:
Thì các bạn có thể sử dụng class HelloWorld này trong class Java:
Chạy chương trình:
Compile và build source code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
[INFO] Scanning for projects... [INFO] [INFO] ---------------< com.huongdanjava:maven-groovy-eclipse >---------------- [INFO] Building maven-groovy-eclipse 0.0.1-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-groovy-eclipse --- [INFO] Deleting /Users/khanh/Documents/workspace-spring-tool-suite-4-4.3.0.RELEASE/maven-groovy-eclipse/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-groovy-eclipse --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-groovy-eclipse --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Using Groovy-Eclipse compiler to compile both Java and Groovy files WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/Users/khanh/.m2/repository/org/codehaus/groovy/groovy-eclipse-batch/2.5.8-01/groovy-eclipse-batch-2.5.8-01.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int) WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-groovy-eclipse --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-groovy-eclipse --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-groovy-eclipse --- [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-groovy-eclipse --- [INFO] Building jar: /Users/khanh/Documents/workspace-spring-tool-suite-4-4.3.0.RELEASE/maven-groovy-eclipse/target/maven-groovy-eclipse-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-groovy-eclipse --- [INFO] Installing /Users/khanh/Documents/workspace-spring-tool-suite-4-4.3.0.RELEASE/maven-groovy-eclipse/target/maven-groovy-eclipse-0.0.1-SNAPSHOT.jar to /Users/khanh/.m2/repository/com/huongdanjava/maven-groovy-eclipse/0.0.1-SNAPSHOT/maven-groovy-eclipse-0.0.1-SNAPSHOT.jar [INFO] Installing /Users/khanh/Documents/workspace-spring-tool-suite-4-4.3.0.RELEASE/maven-groovy-eclipse/pom.xml to /Users/khanh/.m2/repository/com/huongdanjava/maven-groovy-eclipse/0.0.1-SNAPSHOT/maven-groovy-eclipse-0.0.1-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.694 s [INFO] Finished at: 2019-08-29T22:25:32+07:00 [INFO] ------------------------------------------------------------------------ |