본문 바로가기
Web/Spring

[Gradle] 1. spring boot 프로젝트 만들기

by jungwon3004 2022. 2. 22.
728x90
반응형

0. maven 에서 gradle 로 전환

지금까지 작성한 글은 maven 으로 웹 프로젝트를 만드는 방법을 다뤄보았다.

하지만 아무리 봐도 maven 보다 gradle 을 먼저 다루는 것이 맞다고 생각이 든다.

 

신규 프로젝트에서는 거의 사용하지 않는 maven과 이젠 지원하지도 않는 spring legacy 를 이요해서 만드는 프로젝트보다는 앞으로 계속 사용될 가능성이 높은 spring boot와 gradle로 공부해 나가는 것이 훨씬 옳은 방향이라는 생각이 들었다.

물론 maven 에 대한 이해도 충분히 이루어져야 한다.

이미 만들어진 국내 프로젝트들은 maven이 많기 때문에 유지보수 측면에서 보더라도 충분히 알아야 한다.

 

하지만 공부 순서는 뒤집어야 할 것이다.

spring boot와 gradle를 메인으로 공부해 익숙해진 뒤, maven 과 spring legacy 를 이용한 프로젝트를 추후에 배워 유지보수를 할 수 있을 정도로 공부하는 것이 더 옳다고 판단된다.

 

서론이 너무 길었다.

본격적으로 프로젝트부터 만들어보자.

 

 

1. Spring Initializr 를 통한 spring boot project 생성

(참고로 이 글에서 앞으로 다룰 프로젝트는 처음으로 intellij 를 사용해서 진행해볼 예정이다)

(혹시 intellij를 처음 사용한다면, 

file -> setting -> gradle -> 에 들어가서 build and run using과 run tests using을 intellij IDEA 로 설정해두자.

이게 gradle로 되어있으면 굉장히 느려질 때가 있다고 한다.

gradle을 통하지 않고 intellij에서 바로 java 파일을 실행시켜서 빨라진다.)

 

 

 

spring boot 프로젝트를 먼저 만들어보자.

https://start.spring.io/

이곳은 spring에서 직접 운영하는 사이트이다.

(1) project 는 gradle project 로 진행할 것이니 체크해둔다.

(2) 언어는 java (참고로 이 글에서는 java 11 을 사용할 것이다)

(3) spring boot 에도 여러 버전들이 있다.

 참고로 snapshot은 아직 정식 출시되지 않은 것이고 m1도 불안정한 상태이기에 정식 release된 버전 중에서 상위버전인 2.6.3으로 진행하면 된다. 물론 나중에는 버전이 바뀔 것이니 알아서 조정하자.

(4) 이제 project의 metadata 를 정리하자.

 group은 우리가 보통 com.회사이름 혹은 com.프로젝트이름 이런 식으로 짓는다.

 하지만 우리는 그냥 공부하는 것이니, 간단하게 hello 라고 해둘 것이다.

 artifact는 프로젝트 이름 정도로 생각하면 되는데 hello-spring 이라고 간단하게 해두고 넘어가보자.

 description도 지금은 굳이 할 설명이 없으니 넘어가고

 packaging으 jar

 java version은 11로 시작하자.

 

(5) 이제 여기가 가장 중요하다!!! Dependencies 

 해당 프로젝트에서 어떤 libraries를 사용할 것인지 정하는 것이다.

 이번엔 가장 간단한 2가지만 사용해보도록 하겠다.

 

① 지금 진행하는 프로젝트는 웹프로젝트이기에 spring web을 추가해준다.

(spring web에서는 spring MVC를 이용해서 웹을 만드는 library를 제공한다. 또한 apache tomcatembedded container로 사용한다.)

 

② 다음으로 Thymeleaf

 우리가 보는 html을 만들어주는 template emgines이 필요하다.

 여러 template engines 중에서 thymeleaf를 사용할 것이다. (당연히 회사, 프로젝트 마다 다르다)

 

이제 GENERATING 을 통해서 파일을 만들어주면 된다.

 

만들어진 파일은 zip file이기 때문에 압축을 풀어주자.

 

 

2. intelliJ에서 프로젝트 열기

이제 generated file을 열어주면 된다.

intellij에 들어가서 projects open을 누르고 아까 그 project를 실행시켜주자.

여기서 중요한 건 hello-spring folder를 선택하는게 아니고

build.gradle file을 열어주는 것이다.

 

아까 필요한 libraries가 build.gradle에 들어있기 떄문에 실행과 동시에 필요한 다양한 libraries를 다운로드 받는다.

 

 

 

3. spring boot project 구조 이해하기

우선 가장 기본적인 spring boot 의 구조를 이해해보자.

아까 build.gradle 을 통해 프로젝트를 open했다.

그러면 build.gradle 에 있는 다양한 build 세팅을 자동으로 intellij에서 읽고 구조를 만들어둔다.

이 기본적인 구조를 먼저 이해하는게 필요하다.

 

 

(1) .gradle / .idea 

이 두 가지는 intellij가 사용하는 설정파일이다.

따로 우리가 지금 건드릴 부분은 아니니 넘어가자.

 

(2) gradle\wrapper

gradle과 관련된 파일

이 gradle wrapper 가 있기 때문에 따로 gradle을 설치하지 않아도 사용이 가능한 것이다.

 

(3) src \ main / test

요즘은 main과 test가 나누어진 구조가 일반적이다.

 

src \ main \ java 

main 아래에 java 파일과 resources 파일이 있다.

java 파일 아래에 패키지와 실제 실행되는 source 파일이 있다.

 

src \ main \ resources

resources 안에는 java를 제외한 xml, properties, html 등 모든 것들이 들어간다.

java 실행을 돕는 파일들을 넣어둔다.

 

src \ test

test 폴더 아래에는 테스트 코드와 관련된 sources이 들어간다

요즘은 이 test가 정말 중요하다

 

(4) build.gradle

build.gradle은 설정파일이다. (maven의 pom.xml 과 같다)

이 프로젝트에 대한 다양한 설정을 해두는 곳이다.

과거에는 이 build.gradle로 골머리를 앓았다고 하는데 지금은 특별히 그럴 건 없다.

spring boot에서 다 해주기 때문에

이 코드를 하나씩 다 뜯어보는 것이 물론 필요하겠지만, 공부 우선 순위는 뒤로 둬도 된다.

그냥 대강 그렇구나만 이해하면 된다.

 

우선 dependencies { } 를 보자.

처음 프로젝트 만들 때, dependencies에 spring web 과 thymeleaf 2가지 libraries를 추가했던 기억이 있을 것이다.

맞다. 그 libraries들이 여기 적혀있다.

 

단, 추가로 test가 들어가 있는데, 이건 요즘 기본으로 들어가는 test library이다.

JUnit 이 기본적으로 추가된다.

이건 나중에 테스트용으로 사용하게 될 것이다.

 

하지만 생각해보면, 이 libraries를 어디서 다운로드 받을까?

바로 그 저장소가 repositories { mavenCentral() } 이다.

repositories{ } 안에 libraries가 있는 장소를 알려주면 자동으로 가서 다운로드 받는다.

mavenCentral( ) 라는 건 기본 maven repository이다.

회사마다 각자 reporitory를 가지기도 하고, url을 통해서 사용할 수도 있다.

 

(5) .gitignore

이건 git 설정이 적혀있는 것이다.

git에는 source 코드만 올라가고 build 결과 등 다른 건 올라가면 안 된다.

이걸 start.spring.io 에서 제작할 때 자동으로 만들어준 것이다. (편해진 것)

 

 

 

4. 실행

이제 이 최초 생성된 프로젝트를 실행시켜보자.

물론 아무 설정도 안 해서 제대로 뜨진 않겠지만, 실행을 해보긴 하자.

 

실행은 src \ main \java \ hello.hellospring \ HelloSpringApplication.java

을 실행하면 된다.

 

위에서 설명했듯, 우리가 실행할 파일은 main\java 안에 있다고 했다.

그 안에 package가 있고 그 파일을 실행하면 되는 것이다.

 

당연히 public static void main(String[] args){ } 가 실행될 것이다.

SpringApplication.run(HelloSpringApplication.class, args);

을 보면 SpringApplication.run( ) method를 실행시키고, 그 안에 우리가 실행시킨 이 class인 HelloSpringApplication.class를 parameter로 넣는다. 그리고 args까지.

 

이제 실행시키면 console 창에 뭐가 엄청 뜰 것이다.

그 중에 보면

2022-02-22 16:52:32.593  INFO 880 --- [           main] 
o.s.b.w.embedded.tomcat.TomcatWebServer  
: Tomcat started on port(s): 8080 (http) with context path ''

이런게 있다. 

Tomcat이 8080 port에 시작되었다고 뜨니까 http://localhost:8080/ 를 검색해보자.

그러면 에러가 뜰텐데 그러면 잘 된 것이다.

아무 설정도 안 했으니 당연히 에러가 뜬다.

 

 

728x90
반응형