Gradle + Spring Boot with Intelij IDE
พอดีต้องไปทำงานกับ project ที่ใช้ Gradle โดยปกติผมใช้ Maven จึงค่อนข้างเป็นอะไรที่ใหม่และก็ติดปัญหามากมายกว่าจะเข้าใจจึงตัดสินใจสร้างบทความนี้เผื่อจะได้ช่วยเพื่อนๆ มือใหม่ได้ แต่ยังไงแวะไปอ่านที่นี้สักหน่อยนะครับ https://docs.gradle.org/6.8.3/userguide/userguide.html (Latest Vesion ในวันที่ผมเขียน Blog นี้ล่ะครับ)
เช่นเคยนะครับผมจะใช้ Intellij เป็น IDE บน Mac OS นะครับ เราจะสร้าง Rest API ง่ายๆ กัน เริ่มกันเลยครับ
เร่ิมสร้างโปรเจคส์ File -> New Project
เลือก Gradle และ Java จริงๆ สามารถสร้างได้จาก https://start.spring.io/ ได้นะครับแต่บทความนี้ต้องการให้ทราบ step ต่างๆ
Intellij จะ สร้าง file ต่างๆ ที่ Gradle จะใช้ และจะ Start Gradle Daemon ขึ้นมา ด้านขวาจะมี tab ของ Gradle ด้วยซึ่งก็เหมือนกับ Maven ที่เราใช้ๆ กัน
ไปที่ Terminal พิมพ์ ./gradlew ทดสอบดูว่าทุกอย่างโอเคไหม
ซึ่งเครื่องผม Welcome to Gradle 5.2.1. ซึ่งไม่ใช่ Version ล่าสุดผมจึงต้องไปแก้ไฟล์
gradle-wrapper.prperties จาก
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
เป็น
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
ลองใหม่จะได้
พร้อมลุยละครับ แก้ build.gradle
plugins {
id 'org.springframework.boot' version '2.4.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
สร้าง MainApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.zengcode")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
ต่อไปสร้าง API ง่ายๆ กันครับ
package com.zengcode.controller;
import org.springframework.web.bind.annotation.GetMapping;
@org.springframework.web.bind.annotation.RestController
public class RestController {
@GetMapping("/ping")
public String ping() {
return "pong";
}
}
ทดลองรันดูครับ
เป็นอันเรียบร้อยครับ