在 Java 的 Build System 當中,早期是 Ant 的天下,接下來漸漸被 Maven 取代,再到最近越來越多的人選擇使用 Gradle。由於 Gradle 的簡單強大,而且沿用了 Maven Central Repository,讓我們的專案可以更輕鬆的管理。此次分享以 CLI(Command Line Interface) 應用程式為例,從產生一個Gradle專案,整合 third party library,整合主流的 IDE,最後產生一個方便執行的 shell script,全部搞定。在短短的15分鐘,希望給還沒用過 Gradle 的朋友感受 Gradle 的魅力。
8. #JCConf
• Features
• ‘make’ in the java ecosystem
• Pure java
• Target dependency
• Basic Components
• Project (build.xml)
• Target (eg. build, clean, deploy, …)
• Task (javac, jar, copy, …)
8
9. #JCConf
• Features
• Project Object Model
• Common Build Lifecycle
• Convention over Configuration
• Dependency Management
• Basic Components
• Project (pom.xml)
• Lifecycle, Phase, Goal
• Plugin
9
10. #JCConf
• Features
• Groovy-based DSL (Domain Specific Language)
- Not XML configuration any more
• Dependency Management
- Integrate Maven repository
• Task Dependency
- Like target dependency in ant
• Plugins provide the out-of-the-box tasks
- Like lifecycle in maven
• Basic Components
• Project (build.gradle)
• Task
• Plugin
10
14. #JCConf
[Default]
• gradle tasks
- List the tasks
• gradle dependencies
- Display the library dependencies.
[Java Plugin]
• gradle build
- Build the project
• gradle test
- Test the project
• gradle jar
- Generate the jar file
• gradle clean
- Clean the project.
Useful Tasks
14
20. #JCConf
• Gradle IDE plugin
!
!
!
• Tasks
• gradle eclipse
• gradle idea
• Create the project file and put the jars in the IDE
classpath.
IDE Integration (cont.)
apply plugin:’eclipse’
apply plugin:’idea’
20
21. #JCConf
• IDE Gradle plugin or native support
• Gradle Daemon
IDE Integration (cont.)
Intellij Eclipse
eclipse-integration-gradleBuilt-in Gradle Plugin
21
22. #JCConf
Create a Simple CLI Application by Gradle
(by application plugin)
https://github.com/popcornylu/jcconf2014-gradle
28. #JCConf
• Gradle exploit advantages from ant and maven
• Flexible like Ant
• Convention over configuration
• Dependency management
• Out-of-the-box tasks
!
• Use DSL instead of XML
• Good IDE integration
Recap
28
29. #JCConf
• Gradle User Guide
http://www.gradle.org/docs/current/userguide/
userguide_single.html
• Gradle Tutorial in CodeData (by qrtt1)
http://www.codedata.com.tw/java/understanding-gradle-1-
ant/
• Hibernate. Why Gradle?
https://developer.jboss.org/wiki/GradleWhy
• Java Build Tools: Ant vs Maven vs Gradle
http://technologyconversations.com/2014/06/18/build-tools/
Reference
29