ใช้ Gradle สร้าง Spring Boot Application
ส่วนใหญ่ที่ผมสร้าง Spring Boot project ใช้ Maven จัดการกับ dependency ต่างๆ แต่ก็ไม่ค่อยได้ใช้ Gradle มากเท่าไหร่ วันนี้เลยอยากจะมาลองใช้ Gradle จัดการ dependency แทน Maven ดูบ้าง จริงๆ แล้วสามารถใช้ start.spring.io สร้าง Spring Boot project แต่ในบทความนี้จะเล่นท่ายากหน่อยโดยสร้าง Gradle project มาเองเพื่อทำความเข้าใจ Gradle ให้มากขึ้น
Gradle คืออะไร
เป็นเครื่องมือสำหรับ build project อัตโนมัติ โดยใช้แนวคิดเดียวกับ Apache Ant และ Apache Maven แต่จะใช้ภาษา Groovy มาเขียนสคริปท์แทน XML ใน Maven แต่ก็สามารถใช้ Kotlin ได้เช่นเดียวกัน สำหรับสร้าง Java, Groovy และ Scala project
สำหรับ Spring Boot แล้วสามารถใช้ Gradle จัดการ dependency ด้วย Spring Boot Gradle plugin อีกทั้งยังช่วย build, package และ run Application ได้ด้วย
ก่อนอื่นต้องติดตั้ง Gradle ในเครื่องก่อน สามารถทำตามนี้เลย
สร้าง Gradle project
เพื่อสร้าง Gradle project เราสามารถใช้คำสั่ง gradle init
ก็จะได้โครงร่างของ Gradle project
$ gradle init --type java-applicationBUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
โครงสร้าง Gradle project ประกอบด้วย
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ └── java
│ └── App.java
└── test
└── java
└── AppTest.java
- build.gradle — เป็น build script สำหรับ config project
- gradle-wrapper.jar — เป็นไพล์ JAR สำหรับรัน Gradle wrapper
- gradle-wrapper.properties — เป็น config สำหรับรัน Gradle wrapper
- gradlew — เป็น script Gradle wrapper สำหรับ Unix-base system
- gradlew.bat — เป็น script Gradle wrapper สำหรับ Windows system
- settings.gradle — เป็นไฟล์ตั้งค่าของ script สำหรับ Gradle build
- src/main/java/App.java — เป็นไฟล์ Java เริ่มต้น
- src/test/java/App.java — เป็นไฟล์ Test ของ Java เริ่มต้น
ในไฟล์ build.gradle
ที่สร้างขึ้นจะมีค่าเริ่มต้นสำหรับ Java project มาให้แล้ว
เพิ่ม Spring Boot Dependency
หลังจากที่สร้าง Gradle project และได้ script เริ่มต้นแล้ว เราก็เพิ่ม Spring Boot plugin และ dependency ให้กับ build.gradle
เพิ่ม org.springframework.boot
ในส่วน plugins
และ dependencies
ลบ plugins id ‘application’
และ mainClassName
ออก เพราะเราจะใช้ Spring Boot ในการ start application
เพิ่ม package demo
และย้าย App.java
ไปอยู่ใน package demo
พร้อมทั้ง AppTest ด้วย จะได้โครงสร้างดังนี้
└── src
├── main
│ └── java
│ └── demo
│ └── App.java
└── test
└── java
└── demo
└── AppTest.java
refactor class App ในไฟล์ App.java ให้เป็น Spring Boot application แบบง่ายๆ
และ refactor class AppTest ในไฟล์ AppTest.java ให้ทดสอบ Get endpoint /hello
Run Project
หลังจากที่เพิ่ม Spring Boot plugin และ dependency แล้วก็ลอง build project ด้วยคำสั่ง ./gradlew build
เพื่อตรวจสอบว่า project เราไม่มีปัญหาและสร้างไฟล์ Jar
ไว้ใน /build/libs
folder และตรวจสอบ task ที่รองรับด้วยคำสั่ง ./gradlew tasks
สามารถ run project ด้วย task bootRun
ดังนั้นใช้คำสั่ง ./gradlew bootRun
เพื่อ run Spring Boot application ปรกติ
สรุป
จากขั้นตอนในบทความนี้ทำให้สร้าง Spring Boot application project ที่ใช้ Gradle ในการจัดการ dependency และ build, package และ run application ที่สร้างขึ้นได้