๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ ํ”„๋กœ์ ํŠธ/์›จ๋”ฉ๋ฉ”์ดํŠธ

0. ํ”„๋กœ์ ํŠธ ์„ธํŒ…

by nitronium102 2023. 6. 29.
๊ธฐ๋ณธ ์‚ฌํ•ญ
- Gradle
- Java 17
- Spring Boot 3.1.1

0. ๋ฒ„์ „ ์„ค์ •

project : Gradle(Groovy)

Language : Java 17

 

Spring Boot : 3.1.1

 

Metadata

์ง€๊ธˆ๊นŒ์ง€ ๋ชฐ๋ž๋Š”๋ฐ ์ด๊ฒƒ๋„ naming convention์ด ์žˆ๋”๋ผ๊ณ ์š”...?

https://maven.apache.org/guides/mini/guide-naming-conventions.html#:~:text=artifactId%20is%20the%20name%20of,the%20jar%20as%20it's%20distributed.

 

Maven – Guide to Naming Conventions

 

maven.apache.org

ํŒ€ ๋ช…์— dash ๋“ค์–ด๊ฐ€๋Š”๊ฒŒ ์กฐ๊ธˆ ๋ณ„๋กœ์ธ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ ใ…Žใ…Ž...

 

 

1. Dependency ์„ค์ •

์ฒ˜์Œ์— ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๊ณ  JPA๋ž‘ JDBC ๊ฐ™์ด ๋„ฃ์—ˆ๋‹ค๊ฐ€ ์š”์ฆ˜์€ JPA๋กœ ์™„์ „ํžˆ ์˜ฎ๊ฒจ๊ฐ„๋‹ค๊ณ  ํ•ด์„œ ๊ทธ๊ฒƒ๋งŒ ๋„ฃ๊ธฐ๋กœ ํ•จ

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

	// Security
	implementation 'org.springframework.boot:spring-boot-starter-security'
	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

	// @Valid
	implementation 'org.springframework.boot:spring-boot-starter-validation'

	compileOnly 'org.projectlombok:lombok'

	// DB
	runtimeOnly 'com.mysql:mysql-connector-j'

	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.security:spring-security-test'
}

 

 

application.yml ์„ค์ •

SQL ๊ด€๋ จ format๊ณผ parameter ๊ฐ’ ํ‘œ์‹œํ•˜๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://{HOST_NAME}:{PORT_NUM}/{DB_NAME}?serverTimezone=Asia/Seoul
    username: root
    password: {ROOT_PW}

  jpa:
    hibernate:
      ddl-auto: update
    generate-ddl: true
    properties:
      hibernate:
        show_sql: true         # hibernate๊ฐ€ DB์— ๋‚ ๋ฆฌ๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ ํ‘œ์‹œ
        format_sql: true       # sql format ์„ค์ •
        use_sql_comments: true # ์ฃผ์„ ํ‘œ์‹œ
        highlight_sql: true    # ANSI SQL์— ๋งž๊ฒŒ ์ƒ‰ ์ถœ๋ ฅ

logging:
  level:
    org:
      hibernate:
        type:
          descriptor:
            sql: trace # parameter ๊ฐ’์„ ํ‘œ์‹œ

 

- connector ์—…๋ฐ์ดํŠธ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ์ƒˆ๋กญ๊ฒŒ mysql-connector-java-8.0.30์œผ๋กœ ๊น”์•˜๋‹ค

https://velog.io/@hans4257/jsp-MySQL-%EC%97%B0%EB%8F%99-%EC%98%A4%EB%A5%98java.lang.ClassNotFoundException-com.mysql.jdbc.Driver

 

2. Template ์„ค์ •

PULL_REQUEST_TEMPLATE.md

### ์ž‘์—… ๊ฐœ์š”
<!--
  ex) ๊ณ ์–‘์ด๊ฐ€ ์•ผ์˜น ์†Œ๋ฆฌ๋ฅผ ๋‚ด๋„๋ก ์ˆ˜์ •
-->
### Jira
<!--
  ex) BAEMIN-1004
-->
### ์ž‘์—… ๋ถ„๋ฅ˜
- [ ] ๋ฒ„๊ทธ ์ˆ˜์ •
- [ ] ์‹ ๊ทœ ๊ธฐ๋Šฅ
- [ ] ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
<!--
  - [ ] ๋ฒ„๊ทธ ์ˆ˜์ •
  - [x] ์‹ ๊ทœ ๊ธฐ๋Šฅ
  - [ ] ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
-->
### ์ž‘์—… ์ƒ์„ธ ๋‚ด์šฉ
<!--
  ex) 
  1. ๋„ค ๋ฐœ ์ง์Šน ํด๋ž˜์Šค์— `ํฌ์•™` ํ•จ์ˆ˜ ์ถ”๊ฐ€
  2. ๊ณ ์–‘์ด ํด๋ž˜์Šค์—์„œ `ํฌ์•™` ํ•จ์ˆ˜์— `๋ฏธ์•ผ์•„์˜น.wav` ์žฌ์ƒ์‹œํ‚ด
-->
### ์ƒ๊ฐํ•ด๋ณผ ๋ฌธ์ œ
<!--
  ex) 
  1. wav ํŒŒ์ผ์„ ๋งค๋ฒˆ ์ž…๋ ฅํ•˜๊ธฐ ๊ท€์ฐฎ๊ฒ ๋‹ค.
-->

 

Github Hook ์ถ”๊ฐ€

์ด๊ฑด ์•„๋ž˜ ๊ฒŒ์‹œ๊ธ€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

https://dev-minji.tistory.com/213

 

[Github Hook] Jira ํ‹ฐ์ผ“ ๋ฒˆํ˜ธ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž๋™ ์ถ”๊ฐ€ํ•˜๊ธฐ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฒ˜์Œ์œผ๋กœ Jira๋ฅผ ์“ฐ๋ฉด์„œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ๋งค๋ฒˆ ์ด์Šˆ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ hook์„ ์ด์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์•ž์— ์ž๋™์œผ๋กœ ์ง€๋ผ ์ด์Šˆ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™๋„๋ก ์„ค์ •ํ–ˆ๋‹ค! ๋‚ด ์„ค์ • 1

dev-minji.tistory.com

 

Base Branch develop์œผ๋กœ ๋ณ€๊ฒฝ

์ด๊ฑธ ์•ˆ ํ•ด๋†“์œผ๋ฉด ๋งจ๋‚  PRํ•  ๋•Œ๋งˆ๋‹ค develop์œผ๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •์—์„œ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ

 

3. ์ •์  ๋ถ„์„ ๋„๊ตฌ ๋ฐ convention tool ์ถ”๊ฐ€ 

SonarCloud

sonarqube์˜ ํด๋ผ์šฐ๋“œ ๋ฒ„์ „์œผ๋กœ ์ข€ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค!

์ด์ „ ํ”„๋กœ์ ํŠธ์—์„œ ์“ฐ๋˜ ๊ฑธ ๊ทธ๋Œ€๋กœ ๋“ค๊ณ ์™”๋‹คใ…Žใ…Ž

https://zion830.tistory.com/79

 

GitHub ํ”„๋กœ์ ํŠธ์™€ SonarCloud ์—ฐ๊ฒฐํ•ด๋ณด๊ธฐ

GitHub์— ์˜ฌ๋ ค๋‘” ํ”„๋กœ์ ํŠธ์™€ SonarCloud๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ ์ •์  ๋ถ„์„์„ ํ•ด๋ณด์ž. ์ •์  ๋ถ„์„์€ ์†Œ์Šค ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ž ์žฌ์ ์ธ ๋ฒ„๊ทธ๋‚˜, ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์— ์–ด๊ธ‹๋‚˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์„ ์˜๋ฏธ

zion830.tistory.com

 

IntelliJ CheckStyle Plugin

์ด๊ฒƒ๋„ ์ง€๋‚œ ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋งํ•˜๋˜ ์ค‘ ๋ฐœ๊ฒฌํ•œ ํˆด์ด๋‹ค

์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ Naver Conding convention ๋‹ค์šด ๋ฐ›๊ณ  ๊ทธ๊ฒƒ ๊ธฐ๋ฐ˜์œผ๋กœ checkstyle์— ์ ์šฉํ–ˆ๋‹ค

https://bestinu.tistory.com/64

 

InteliJ ๋„ค์ด๋ฒ„ Java ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ ์ ์šฉํ•˜๊ธฐ + Checkstyle

InteliJ ๋„ค์ด๋ฒ„ Java ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ ์ ์šฉํ•˜๊ธฐ + Checkstyle ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์ด๋ž€? ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์ด๋ž€ ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๊ทœ์•ฝ์„ ๋งํ•œ๋‹ค. ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์„ ์ค€์ˆ˜ํ•˜๋ฉด

bestinu.tistory.com

 

์ผ๋‹จ์€ ์ด๊ฒƒ์œผ๋กœ 1์ฐจ ํ”„๋กœ์ ํŠธ ์„ธํŒ…์€ ๋!

๋Œ“๊ธ€