자율 프로젝트 Java 11 Gradle Spring boot 2.7.4
모든 과정은 IntelliJ 2022.2 기준으로 설명되었습니다.
| Project | Version | Description |
|---|---|---|
| Java | 11 | |
| Spring Boot | 2.7.1 | |
| Gradle | ||
| Spring Security | 5.7.2 | |
| MariaDB | 10.6.8 | |
| AWS EC2 | ||
| Nginx | ||
| Docker | ||
| Jenkins | Pipeline |

Gitlab의 레포지토리를 clone합니다.
git clone <https://lab.ssafy.com/s07-webmobile3-sub2/S07P12D204.git>
backend폴더로 이동합니다.
cd S07P12D204/backend
gradle 의존성을 다음과 같이 추가합니다.
plugins {
id 'org.springframework.boot' version '2.7.1'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.yodel.imagnaryPlayground'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
// Spring Boot
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-validation'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// oauth
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
// Jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2'
// OAuth
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2'
implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// Swagger
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
// mail 인증
implementation 'org.springframework.boot:spring-boot-starter-mail'
// Security
implementation group: 'org.springframework.security', name: 'spring-security-core', version: '5.7.1'
// File upload
implementation 'commons-io:commons-io:2.6'
implementation group: 'org.json', name: 'json', version: '20220320'
}
tasks.named('test') {
useJUnitPlatform()
}
해당 서비스는 AWS EC2를 이용하여 배포하였습니다.
배포를 하기 위해 다음과 같은 방법으로 실행하였습니다.
AWS EC2 인스턴스 생성
공개키 기반 인증 SSH 접속
ssh -i "개인키 경로" [email protected]
Docker + Jenkins 설치