|
|
|
//--------------------------------------------------------------------------------------
|
|
|
|
// gradle에서는 스크립트 위치 중요
|
|
|
|
// plugins{} 전에는 buildscript{}와 plugins{} 만 가능
|
|
|
|
//--------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
buildscript {
|
|
|
|
ext {
|
|
|
|
springBootVersion ='2.6.1'
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
|
|
|
|
|
|
|
|
// JPA querydsl
|
|
|
|
//classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
plugins {
|
|
|
|
//id 'application'
|
|
|
|
id 'org.springframework.boot' version '2.6.1'
|
|
|
|
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
|
|
|
|
id 'java'
|
|
|
|
id 'war'
|
|
|
|
//id 'net.ltgt.apt' version '0.21'
|
|
|
|
// querydsl
|
|
|
|
//id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
|
|
|
|
//id 'org.openapi.generator' version '5.1.1'
|
|
|
|
|
|
|
|
// docker : jib
|
|
|
|
// bootWar --> jibDockerBuild
|
|
|
|
//id 'com.google.cloud.tools.jib' version '3.1.2' //
|
|
|
|
}
|
|
|
|
|
|
|
|
// buildscript
|
|
|
|
group = 'com.xit'
|
|
|
|
version = '0.0.1-SNAPSHOT'
|
|
|
|
description = 'xit-opst-bo'
|
|
|
|
sourceCompatibility = '11'
|
|
|
|
|
|
|
|
// WAS로 배포하는 경우 : bootWar.enabled = false
|
|
|
|
bootWar.enabled = true
|
|
|
|
war.enabled = true
|
|
|
|
|
|
|
|
repositories {
|
|
|
|
mavenCentral()
|
|
|
|
google()
|
|
|
|
}
|
|
|
|
|
|
|
|
configurations {
|
|
|
|
compileOnly {
|
|
|
|
extendsFrom annotationProcessor
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
//dependency is used by the application.
|
|
|
|
implementation 'com.google.guava:guava:30.1.1-jre'
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Core
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// spring boot core
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter'
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
|
|
|
|
implementation 'org.springframework.boot:spring-boot-configuration-processor'
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-security'
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
|
|
|
|
|
|
|
|
// spring-boot 2.3 까지는 사용 불가 - spring-boot-starter-web에 포함되어 있다
|
|
|
|
// hibernate-validator:5.2.4.Final 사용
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-validation'
|
|
|
|
// spring-boot 2.3 까지는 아래 lib 사용
|
|
|
|
//implementation 'org.hibernate:hibernate-validator:5.2.4.Final'
|
|
|
|
|
|
|
|
// graphql
|
|
|
|
implementation 'com.graphql-java-kickstart:graphql-spring-boot-starter:12.0.0'
|
|
|
|
implementation 'com.graphql-java-kickstart:graphql-java-tools:12.0.1'
|
|
|
|
// implementation 'com.graphql-java-kickstart:graphiql-spring-boot-starter:12.0.0'
|
|
|
|
// implementation 'io.projectreactor:reactor-core:3.4.14' // react
|
|
|
|
|
|
|
|
//implementation 'com.graphql-java:graphql-spring-boot-starter:5.0.2'
|
|
|
|
//implementation 'com.graphql-java:graphql-java:17.3'
|
|
|
|
//implementation 'com.graphql-java:graphql-java-tools:5.2.4'
|
|
|
|
//implementation 'com.graphql-java:graphiql-spring-boot-starter:5.0.2'
|
|
|
|
// graphql-like sql usual
|
|
|
|
implementation 'io.leangen.graphql:graphql-spqr-spring-boot-starter:0.0.6'
|
|
|
|
|
|
|
|
// jta module
|
|
|
|
//implementation('org.springframework.boot:spring-boot-starter-jta-atomikos')
|
|
|
|
|
|
|
|
// yaml 다국화 lib
|
|
|
|
implementation 'net.rakugakibox.util:yaml-resource-bundle:1.2'
|
|
|
|
|
|
|
|
|
|
|
|
// social login
|
|
|
|
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Java Web Token
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
|
|
|
|
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'
|
|
|
|
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Mybatis
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
implementation 'org.mybatis:mybatis:3.5.9'
|
|
|
|
implementation 'org.mybatis:mybatis-typehandlers-jsr310:1.0.2'
|
|
|
|
implementation 'org.mybatis:mybatis-spring:2.0.6'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// JPA
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// JPA logging p6spy
|
|
|
|
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0'
|
|
|
|
implementation 'p6spy:p6spy:3.9.1'
|
|
|
|
|
|
|
|
// JPA querydsl
|
|
|
|
//compileOnly 'com.querydsl:querydsl-jpa'
|
|
|
|
//compileOnly 'com.querydsl:querydsl-apt'
|
|
|
|
|
|
|
|
// JPA mapstruct : lombok 과 함께 사용시 반드시 순서 지겨야 함다 - lombok이 먼저 선언된 경우
|
|
|
|
implementation 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
|
|
|
|
implementation 'org.projectlombok:lombok'
|
|
|
|
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
|
|
|
|
annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0"
|
|
|
|
annotationProcessor 'org.projectlombok:lombok'
|
|
|
|
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
|
|
|
|
|
|
|
|
// JPA mapstruct : lombok 과 함께 사용시 반드시 순서 지겨야 함다 - ㅡmapstruct이 먼저 선언된 경우
|
|
|
|
// target class 에 @Builder 가 있어도 무시하고 생성자 + setter 를 사용하므로 정상적으로 Mapper 클래스를 Generation 하기 위해서
|
|
|
|
// @NoArgsConstructor, @Setter 가 필요
|
|
|
|
// but, 최근 Setter 사용을 지양하는 추세라 mapstruct를 먼저 오도록 해서 @Builder 방식으로 Generation
|
|
|
|
// implementation 'org.mapstruct:mapstruct:1.4.2.Final'
|
|
|
|
// implementation 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
|
|
|
|
// implementation 'org.projectlombok:lombok'
|
|
|
|
// annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
|
|
|
|
// annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0"
|
|
|
|
// annotationProcessor 'org.projectlombok:lombok'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Springdoc : swagger
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
implementation 'org.springdoc:springdoc-openapi-ui:1.6.3'
|
|
|
|
implementation 'org.springdoc:springdoc-openapi-security:1.6.3'
|
|
|
|
implementation 'org.springdoc:springdoc-openapi-data-rest:1.6.3'
|
|
|
|
implementation 'org.springdoc:springdoc-openapi-webmvc-core:1.6.3'
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Xss Injection avoid : Naver lucy-xss
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
implementation 'com.navercorp.lucy:lucy-xss-servlet:2.0.1'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// slack webhook : logback slack webhook
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
implementation 'com.github.maricn:logback-slack-appender:1.4.0'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// DB driver
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
runtimeOnly 'com.h2database:h2:1.4.199' // 2.0.202 사용시 에러 발생
|
|
|
|
implementation 'org.postgresql:postgresql:42.3.1'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Webflux
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
//implementation 'org.springframework.boot:spring-boot-starter-webflux'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// 3rd-party lib
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// AOP
|
|
|
|
implementation 'org.aspectj:aspectjrt'
|
|
|
|
implementation 'org.aspectj:aspectjweaver'
|
|
|
|
|
|
|
|
// simple captcha
|
|
|
|
implementation fileTree(dir: 'repo', include: ['*.jar'])
|
|
|
|
//implementation fileTree(dir: 'repo', include: 'simplecaptcha-1.2.1.jar')
|
|
|
|
//implementation fileTree(dir: 'repo', include: 'ojdbc8.jar')
|
|
|
|
|
|
|
|
// amazon aws s3
|
|
|
|
implementation 'com.amazonaws:aws-java-sdk-s3:1.12.131'
|
|
|
|
|
|
|
|
// excel poi
|
|
|
|
implementation 'org.apache.poi:poi-ooxml:4.1.2' //5.0.0 사용시 에러 : poi-ooxml-schemas
|
|
|
|
implementation 'org.apache.poi:poi:4.1.2' //5.0.0 사용시 에러 implementation 'org.apache.commons:commons-lang3:3.12.0'
|
|
|
|
|
|
|
|
// Object Deep-copy : Cloner
|
|
|
|
implementation 'uk.com.robust-it:cloning:1.9.12'
|
|
|
|
|
|
|
|
// Get Device 정보 : Device / UserAgent
|
|
|
|
implementation 'org.springframework.mobile:spring-mobile-device:1.1.5.RELEASE'
|
|
|
|
implementation 'eu.bitwalker:UserAgentUtils:1.21'
|
|
|
|
|
|
|
|
// 문자열 type check : UniversalDetector - excel
|
|
|
|
implementation 'com.googlecode.juniversalchardet:juniversalchardet:1.0.3'
|
|
|
|
|
|
|
|
implementation 'org.apache.httpcomponents:httpcore:4.4.15'
|
|
|
|
implementation 'commons-collections:commons-collections:3.2.2'
|
|
|
|
implementation 'commons-fileupload:commons-fileupload:1.4'
|
|
|
|
implementation 'javax.mail:mail:1.4.7'
|
|
|
|
implementation 'org.codehaus.jackson:jackson-core-asl:1.9.13'
|
|
|
|
|
|
|
|
// google json
|
|
|
|
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
|
|
|
|
implementation 'com.google.code.gson:gson:2.8.9'
|
|
|
|
|
|
|
|
|
|
|
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.13.1'
|
|
|
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.13.1'
|
|
|
|
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.1'
|
|
|
|
implementation 'com.fasterxml.jackson.module:jackson-module-afterburner:2.13.1'
|
|
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.1'
|
|
|
|
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-joda:2.13.1'
|
|
|
|
// response xml
|
|
|
|
implementation 'javax.xml.bind:jaxb-api:2.3.1'
|
|
|
|
//implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.5'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Test
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
testImplementation 'org.springframework.security:spring-security-test'
|
|
|
|
testImplementation ('org.springframework.boot:spring-boot-starter-test'){
|
|
|
|
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
|
|
|
|
}
|
|
|
|
testImplementation("org.junit.vintage:junit-vintage-engine") {
|
|
|
|
exclude group: "org.hamcrest", module: "hamcrest-core"
|
|
|
|
}
|
|
|
|
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2' //'junit:junit:4.13.2'
|
|
|
|
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' //'junit:junit:4.13.2'
|
|
|
|
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.2' //'junit:junit:4.13.2'
|
|
|
|
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' //'junit:junit:4.13.2'
|
|
|
|
testRuntimeOnly 'org.hamcrest:hamcrest-library:2.2'
|
|
|
|
testRuntimeOnly 'com.jayway.jsonpath:json-path:2.5.0'
|
|
|
|
implementation 'org.assertj:assertj-core:3.21.0'
|
|
|
|
|
|
|
|
testCompileOnly 'org.projectlombok:lombok'
|
|
|
|
testAnnotationProcessor 'org.projectlombok:lombok'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Development environment
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
|
|
|
|
providedCompile 'org.springframework.boot:spring-boot-starter-tomcat'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Deployment environment : war 배포를 위한 내장 톰캣 추가
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Template engine : thymeleaf
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
//implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
|
|
|
//implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.5.3'
|
|
|
|
//implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.0.4.RELEASE'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// JSP
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
//compileOnly 'org.apache.tomcat.embed:tomcat-embed-jasper'
|
|
|
|
//compileOnly 'javax.servlet:jstl'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// Web library
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
// implementation 'org.webjars:webjars-locator:0.41'
|
|
|
|
// implementation 'org.webjars:webjars-locator-core:0.47'
|
|
|
|
// implementation 'org.webjars:bootstrap:5.1.0'
|
|
|
|
// implementation 'org.webjars:font-awesome:5.15.3'
|
|
|
|
// implementation 'org.webjars:popper.js:2.9.3'
|
|
|
|
// implementation 'org.webjars:jquery:3.6.0'
|
|
|
|
// implementation 'org.webjars:jquery-i18n-properties:1.10.2'
|
|
|
|
// implementation 'org.webjars:momentjs:2.29.1'
|
|
|
|
//-----------------------------------------------------------------------------------//
|
|
|
|
}
|
|
|
|
|
|
|
|
tasks.withType(JavaCompile) {
|
|
|
|
options.encoding = 'UTF-8'
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
test {
|
|
|
|
//exclude '**/*'
|
|
|
|
useJUnitPlatform()
|
|
|
|
}
|