인텔리제이에서 Gradle 기반의 애플리케이션을 빌드하기 위해서는 :bootJar 나 :build를 하면 된다.
빌드가 정상적으로 종료된다면 build/libs 에 .jar 파일이 생성된다.
:build는 Gradle에서 빌드와 관련된 모든 task를 실행한다.
:bootJar는 실행 가능한 Jar 생성을 위한 task만 실행한다.
인텔리제이로 빌드가 불가능한 상황이라면 명령어로 빌드할 수 있다.
윈도우 터미널에서 프로젝트 경로에서 .\gradlew bootJar
Git Bash의 경우는 ./gradlew build
하면 인텔리제이에서 빌드했을 때와 마찬가지로 build/libs에 .jar가 생성된다
애플리케이션을 실행하고 싶다면 java -jar 파일명
로컬에서 테스트할 때에는 인메모리 DB인 H2를, 애플리케이션을 배포한 후에는 다른 DB를 사용한다고 할 때, DB 정보를 수동으로 수정하기에는 비효율적이다. >> 프로파일 사용
프로파일 적용
1. 설정 파일을 나눈다.
일반적으로 application.yml은 공통 정보를, application-server.yml은 서버 환경에서 필요한 정보를, application-local.yml은 로컬 환경에서 필요한 정보를 추가한다.
# application-local.yml
# 인메모리 DB인 H2 사용
spring:
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:mem:test
jpa:
hibernate:
ddl-auto: create # 스키마 자동 생성
show-sql: true # SQL 쿼리 출력
properties:
hibernate:
format_sql: true
sql:
init:
data-locations: classpath*:db/h2/data.sql
logging:
level:
org:
springframework:
orm:
jpa: DEBUG
server:
servlet:
encoding:
force-response: true
mySql을 사용하려면 build.gradle에서도 추가해줘야한다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java'
이번 과제의 경우 윗줄은 이미 포함되어 있어 아랫줄만 추가해줬음
# application-server.yml
# MySql 사용
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Seoul
username: root
password:
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate:
format_sql: true
위 예시의 경우, url의 "test"는 스키마 이름.
test라는 스키마를 내가 만들어주지 않으면 에러가 발생한다.
ddl-auto: create-drop은 애플리케이션 시작마다 스키마를 생성하고, 종료시 스키마를 삭제해준다. 테스트용으로는 좋지만, 실제 운영 환경에서는 권장되지 않는단다.
체크...
애플리케이션 배포 방법
1. Jar 파일을 scp, sftp같은 표준 유닉스 툴을 이용해서 서버로 전송하는 방법
2. 클라우드 서비스를 통한 배포 방법
PaaS(Cloud Foundry, Heroku), Iaas(AWS, Azure), CI/CD