gradle로 Springboot 시작하기
[gradle
SpringBoot
]
이 글은 이클립스에서의 설정이 아닌 터미널에서 gradle로 스프링부트를 설치하는 방법을 적어놓은 것이다.
실행 환경은 아래와 같다.
- Ubuntu 20.04 LTS
- openjdk version “1.8.0_312”
gradle 설치
이 글을 쓰고 있는 현재 gradle의 최신 버전은 7.4.2이다. 최신 버전 확인은
https://gradle.org/releases/
에서 확인하기 바란다.
아쉽게도 ubuntu에서 apt install gradle
을 실행하면 옛날 4.x대의 버전이 설치가 된다. 최신 버전은 직접 다운받아야 한다.
$ VERSION=7.4.2
$ wget https://services.gradle.org/distributions/gradle-${VERSION}-bin.zip -P /tmp
압축을 푼다.
$ sudo unzip -d /opt/gradle /tmp/gradle-${VERSION}-bin.zip
링크를 연결한다.
$ sudo ln -s /opt/gradle/gradle-${VERSION} /opt/gradle/latest
터미널에서 gradle명령을 가능하게 하려면 환경설정을 해야 한다.
아래 파일을 열어서(아마 없을 것이다. 새로 만들면 된다)
$ sudo vi /etc/profile.d/gradle.sh
다음과 같이 입력하고 저장한다.
export GRADLE_HOME=/opt/gradle/latest
export PATH=${GRADLE_HOME}/bin:${PATH}
스크립트 파일에 실행 권한을 부여한다.
$ sudo chmod +x /etc/profile.d/gradle.sh
source 명령어로 스크립트 로딩
$ source /etc/profile.d/gradle.sh
터미널에서 아래와 같이 버전확인 가능하면 OK
$ gradle -version
------------------------------------------------------------
Gradle 7.4.2
------------------------------------------------------------
이제 gradle init
명령으로 프로젝트를 하나 생성한다.
~/gradletest$ gradle init
Starting a Gradle Daemon (subsequent builds will be faster)
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] <-- 1선택
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] <-- 1선택
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] <-- no선택
Project name (default: gradletest): <-- default선택
생성된 프로젝트의 폴더 구조는 다음과 같다.
~/gradletest$ tree .
.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
SpringBoot반영
gradle의 반영은 build.gradle파일에서 해 준다.
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.4.2/samples
*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.10.RELEASE")
}
}
plugins {
id 'org.springframework.boot' version '2.5.0'
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'io.spring.dependency-management'
jar {
baseName = 'gs-spring-boot'
version = '0.1.0'
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
testImplementation("junit:junit")
}
Controller.java생성
다음과 같이 controller.java파일을 생성해 보자
$ mkdir -p src/main/java/com/runTestSample
$ cd src/main/java/com/runTestSample
$ touch Controller.java
//file: Controller.java
package com.runTestSample;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
public class Controller {
@RequestMapping("/")
public String index() {
return "<h1>와 이게 왜 되지</h1>";
}
@RequestMapping("/test")
public String test() {
return "<h1>여기는 테스트.</h1>";
}
}
Application.java 생성
동일한 디렉토리(src/main/java/com/runTestSample
)에 아래와 같이 생성한다.
package com.runTestSample;
import java.util.Arrays;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
};
}
}
확인
이제 잘 동작하는지 확인해 보자
$ gradle build
BUILD SUCCESSFUL in 1s
4 actionable tasks: 4 executed
실행을 위한 jar파일은 build/libs
밑에 생성된다.
~/gradletest$ tree build
build
├── bootJarMainClassName
├── classes
│ └── java
│ └── main
│ └── com
│ └── runTestSample
│ ├── Application.class
│ └── Controller.class
├── generated
│ └── sources
│ ├── annotationProcessor
│ │ └── java
│ │ └── main
│ └── headers
│ └── java
│ └── main
├── libs
│ ├── gradletest.jar
│ └── gs-spring-boot-0.1.0-plain.jar
└── tmp
├── bootJar
│ └── MANIFEST.MF
├── compileJava
│ └── previous-compilation-data.bin
└── jar
└── MANIFEST.MF
SpringBoot구동을 해 보자.
$ java -jar build/libs/gradletest.jar
웹 브라우저를 띄우고 http://localhost:8080으로 접속
http://localhost:8080/test로도 접속하면 다음과 같이 뜬다.