Spring Boot를 이용한 RESTful Web Services 개발 #6 Spring Boot Project에서 Gradle 및 Profile 살펴보기

Jake Seo·2021년 9월 12일
0

Spring-boot-restful

목록 보기
6/17

Gradle 기본 태스크들 살펴보기

위와 같이 기본 태스크들이 존재하는데 주로 이용하는 것은 buildclean 명령어일 것이다.

  • build: 현재까지 작성한 자바 파일은 클래스 파일의 형태로 변경해주고, 또 기타 작업들을 하면서 build라는 디렉토리 내부에 내 프로젝트를 실행 가능한 형태로 만들어준다.
  • clean: 빌드된 내용을 지워준다. 주로 프로젝트 내부에서 변경사항이 있을 때, 그 부분을 제대로 적용시키려고 clean하는 경우가 많다.


build를 실행시키면 내부적으로 어떤 task들이 실행되었는지 나온다.

의존성 살펴보기

implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 와 같은 형식으로 의존성을 넣어주게 되는데, 앞에 implentation을 기준으로 나뉘고 또, :를 기준으로 2가지 파트로 나뉜다. 위 의존성을 기준으로 살펴보자.

  • implementation: 해당 의존성이 필요한 시점을 가리키는데 implementation은 컴파일타임과 런타임 시점 모두에 필요한 의존성이라는 뜻이다.
  • groupId: org.springframework.boot가 해당 의존성이 들어있는 그룹의 이름이다.
  • artifactId: spring-boot-starter-data-jpa가 우리가 프로젝트를 생성할 때 프로젝트 이름을 설정했듯, 해당 라이브러리의 프로젝트 이름이다.

implementation, compileOnly, runtimeOnly 개념 잡기

자바 프로젝트를 실행하면 다음과 같은 2가지 classpath가 존재한다.

  • Compile classpath: JDK가 자바 코드를 .class 파일로 컴파일하는데 필요로 하는 의존성 목록이 들어간다.
  • Runtime classpath: 실제로 컴파일된 자바코드를 실행하는데 필요한 의존성 목록이 들어간다.

Gradle 내부에서 어떤 의존성이 어떤 classpath에 들어갈지 직접 설정해줄 수 있다. 그래서 의존성을 선언하는데는 3가지 키워드 옵션을 갖는다.

  • compileOnly: compile path 에만 넣어줄 의존성
    • 컴파일하는데만 필요하며, 실행 중에는 필요 없는 의존성이다.
  • runtimeOnly: runtime path 에만 넣어줄 의존성
    • 컴파일하는데는 필요 없으며, 실행 중에만 필요한 의존성이다.
  • implementation: 두가지 모두에 넣어줄 의존성
    • 컴파일, 실행 중 모두 필요한 의존성이다.

위와 같이 의존성에 대한 classpath를 지키면 다음과 같은 장점이 생긴다.

  • 더 빠른 컴파일: compile path 에 더 적은 의존성만 포함해도 된다면, 컴파일 속도가 빨라진다.
  • 코딩 중 실수로 런타임에만 적용되는 클래스를 사용할 일이 없다: runtime classpath 에만 사용할 의존성을 실수로 사용할 일이 없다.
  • class path를 조금 더 깔끔하게 만든다: 복잡도를 줄일 수 있다.

레퍼런스: https://tomgregory.com/gradle-implementation-vs-compile-dependencies/
레퍼런스에는 테스트 혹은 라이브러리 작성 시에 관여하는 의존성 정보들도 포함하여 설명해주고 있다.

test 라는 글자가 붙은 영역은 당연히 테스트 시에만 쓰인다.

프로젝트 실행해보기

로그 살펴보기

로그를 통해 다양한 정보를 확인할 수 있다.

  • No active profile set: 프로젝트의 profile이 선택되지 않아서 default라는 profile을 사용한다.
  • Devtools property defaults active!: 스프링 데브툴이 기본으로 활성화 되어있다.
  • 기타 각종 JPA, ORM 초기화 정보 ...

등등 많은 정보를 알 수 있다.

Profile이란?

보통 어떤 프로그램을 개발하며 배포하는데에 로컬 환경, 개발 환경, 운영 환경에서 작업을 하게 된다. 그러한 환경에 따라서 실행될 코드가 약간 달라지는 경우가 많은데 그런 경우 유용하게 사용할 수 있는 개념이다.

애플리케이션 실행 시 Edit Configurations... 에 들어가서

Active Profiles 부분을 local, development, production 등으로 변경하여 실행하면 된다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글