You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

280 lines
13 KiB
Groovy

3 years ago
//--------------------------------------------------------------------------------------
// gradle에서는 스크립트 위치 중요
// plugins{} 전에는 buildscript{}와 plugins{} 만 가능
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
buildscript {
ext {
springBootVersion ='2.6.3'
queryDslVersion = "5.0.0"
3 years ago
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
}
}
plugins {
//id 'application'
id 'org.springframework.boot' version '2.6.3'
3 years ago
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
// buildscript
group = 'com.xit'
version = '0.0.1-SNAPSHOT'
description = 'xit-opst-bo'
3 years ago
sourceCompatibility = '11'
// WAS로 배포하는 경우 : bootWar.enabled = false
bootWar.enabled = false
bootWar{
enabled(false)
archiveName('opst-bo.war')
}
war{
enabled(true)
archiveFileName('ROOT.war')
// webInf {
// from("${buildDir}/resources/main")
// }
}
3 years ago
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'
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3'
3 years ago
// 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'
3 years ago
// jta module
//implementation('org.springframework.boot:spring-boot-starter-jta-atomikos')
// yaml 다국화 lib
implementation 'net.rakugakibox.util:yaml-resource-bundle:1.2'
3 years ago
// 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'
3 years ago
// JPA querydsl ----------------------------------------------
implementation "com.querydsl:querydsl-jpa"
// querydsl JPAAnnotationProcessor 사용 지정
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
// java.lang.NoClassDefFoundError(javax.annotation.Entity) 발생 대응
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// java.lang.NoClassDefFoundError (javax.annotation.Generated) 발생 대응
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
// ------------------------------------------------------------
// JPA mapstruct -----------------------------------------------------------
// lombok 과 함께 사용시 반드시 순서 지겨야 함다 - ㅡmapstruct이 먼저 선언된 경우
3 years ago
// 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'
3 years ago
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
// 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')
3 years ago
// 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 'commons-io:commons-io:2.11.0'
3 years ago
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'
// jackson
3 years ago
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.datatype:jackson-datatype-joda:2.13.1'
// JAP LAZY loading시 객체생성 (OneToMay <--> ManyToOne)
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5'
//implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.5'
3 years ago
// response xml
implementation 'javax.xml.bind:jaxb-api:2.3.1'
3 years ago
//implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.5'
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
// Test
//-----------------------------------------------------------------------------------//
testImplementation 'org.springframework.boot:spring-boot-starter-test'
3 years ago
testImplementation 'org.springframework.security:spring-security-test'
// querydsl
testImplementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
testAnnotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
3 years ago
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'
3 years ago
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
//-----------------------------------------------------------------------------------//
// querydsl
//-----------------------------------------------------------------------------------//
/** clean 태스크 실행시 QClass 삭제 */
/**
* Intellij IDEA - Build, Execution, Deployment - Build tools Gradle Build and run Annotation processor
* Gradle: build/generated/sources/annotationProcessor/java/main
* Q clean
* IntellijI IDEA: src/main/generated
* Compiler Annotation procesoors
* Q , Q
* Build, Execution, Deployment - Compiler -> Enable annotaion processing
*/
clean {
delete file('src/main/generated') // 인텔리제이 Annotation processor 생성물 생성위치
}
3 years ago
test {
exclude '**/*'
//useJUnitPlatform()
3 years ago
}