[Build] gradle vs yml

황성현·2025년 9월 18일

Setting,Env

목록 보기
1/1

build.gradle

  • Gradle 빌드 스크립트 파일
  • 프로젝트를 어떻게 빌드하고, 어떤 의존성(dependency) 을 가져올지 정의하는 곳
  • 실행 시점이 아니라 빌드 시점(compile, test, package) 에 영향을 줌

ex) 소스코드에서 JPA관련 Repository 사용, Spring boot 기반 WAS 사용 etc...

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.5'
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.mysql:mysql-connector-j'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

=> 즉, 우리가 작성한 소스를 "컴파일하여 실행가능한 jar 파일( build )을 만들 때" 해당 프로젝트는 JPA, Mysql Driver, Spring Web Module 등이 필요하다는 정보를 나타내는 곳


application.yml

  • Spring Boot 실행 환경 설정 파일
  • 애플리케이션이 실행될 때 필요한 설정값을 정의
  • DB 연결, 포트 번호, 로그 레벨, 외부 API 키, Profile별 환경 설정 등에 사용

ex)

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: user
    password: pass

server:
  port: 8080

logging:
  level:
    root: INFO

=> 즉, jar를 "실행할 때" DB는 어디에 연결하고 포트는 몇 번을 쓸 지, 어떤 환경에서 어떻게 동작할까? 에 대한 설정이다


.env

  • yml파일에서 런타임시점 설정을 해주는 건 좋은데 해당 설정 파일에 중요한 정보가 너무 많이 들어가 있네...?
  • value 값들을 .env파일로 분리하고 ${~~~}로 바인딩 받아서 쓰자! 에서 나온 파일
  • 해당 파일은 인코딩 과정을 거쳐서 서버에 올려야함

.env

SWAGGER_SERVER_URL= 도메인 주소
DB_URL=DB 연결정보
DB_USERNAME=이름
DB_PASSWORD=비밀번호

application.yml

  datasource:
    url: ${DB_URL}
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
    driver-class-name: org.postgresql.Driver
    hikari:
      maximum-pool-size: 8
      minimum-idle: 2
      connection-timeout: 3000
      idle-timeout: 60000
  • Docker기반으로 EC2에 올렸다면?
    => 해당 docker-compose 파일과 동일 경로에 .env 넣고 컴포즈 파일에 정의해주면 결국엔 런타임 시점에 설정하는( yml에 넣어주는거니까! ) 값들을 세팅해줌.

0개의 댓글