Files
eapim-portal/build.gradle
2026-04-03 17:22:56 +09:00

235 lines
8.2 KiB
Groovy

plugins {
id 'java'
id 'war'
id 'eclipse'
id 'idea'
id 'org.springframework.boot' version '2.7.18'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'com.eactive'
version = '1.0.0'
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
def nexusUrl = "https://nexus.eactive.synology.me:8090"
allprojects {
repositories {
maven {
url "${nexusUrl}/repository/maven-public/"
allowInsecureProtocol = true
}
}
}
dependencies {
annotationProcessor "org.projectlombok:lombok:1.18.28"
annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0", "org.mapstruct:mapstruct-processor:1.5.5.Final"
implementation 'com.eactive.elink.common:elink-common-data:4.5.5'
// implementation 'io.swagger.core.v3:swagger-core:2.2.25'
// implementation 'io.swagger.parser.v3:swagger-parser:2.1.23'
implementation fileTree(dir: 'libs/swagger', include: ['*.jar'])
implementation project(':elink-online-core-jpa')
implementation project(':elink-portal-common')
// implementation project(':kjb-safedb')
implementation('org.springframework.boot:spring-boot-starter')
implementation 'org.springframework.boot:spring-boot-starter-jta-atomikos'
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.springframework.boot:spring-boot-starter-validation')
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
implementation group: 'com.fasterxml.woodstox', name: 'woodstox-core', version: '6.5.1'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation('org.springframework.boot:spring-boot-starter-cache')
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.data:spring-data-envers'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework:spring-expression:5.3.30'
implementation group: 'xalan', name: 'xalan', version: '2.7.3'
implementation 'org.hibernate:hibernate-envers:5.6.15.Final'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.0.0'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
implementation 'com.github.ua-parser:uap-java:1.5.3'
implementation 'org.apache.httpcomponents:httpclient:4.5.14'
implementation 'com.navercorp.lucy:lucy-xss-servlet:2.0.1'
implementation 'javax.servlet:javax.servlet-api:4.0.0'
implementation 'org.jasypt:jasypt:1.9.3'
implementation 'xerces:xercesImpl:2.12.2'
implementation 'org.apache.commons:commons-lang3:3.12.0'
implementation 'org.apache.commons:commons-collections4:4.4'
implementation 'commons-net:commons-net:3.9.0'
implementation('commons-beanutils:commons-beanutils:1.9.4') {
// exclude group: 'commons-collections', module: 'commons-collections'
}
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
implementation 'com.fasterxml.jackson.core:jackson-core:2.15.3'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.3'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3'
implementation group: 'org.apache.velocity', name: 'velocity-engine-core', version: '2.3'
// runtimeOnly group: 'com.mysql', name: 'mysql-connector-j', version: '8.4.0'
runtimeOnly 'com.oracle.database.jdbc:ojdbc8:19.20.0.0'
implementation 'net.bytebuddy:byte-buddy:1.14.5'
// Commons FileUpload (WAS 독립적인 multipart 처리)
implementation 'commons-fileupload:commons-fileupload:1.5'
implementation 'commons-io:commons-io:2.15.1'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
testImplementation 'org.mockito:mockito-inline:3.11.2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.seleniumhq.selenium:selenium-java:4.8.3'
testImplementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '5.9.1'
testImplementation 'org.apache.httpcomponents.client5:httpclient5:5.2.1'
}
ext {
springMavenArtifactVersion = '5.3.30'
encoding = 'UTF-8'
profile = 'local'
}
task printProfile {
doLast {
if (project.hasProperty('profile')) {
println "Current profile: ${project.property('profile')}"
} else {
println "No profile specified"
}
}
}
bootRun {
// 디버깅 사용시에는 아래 내용 주석 해제 하세요
// jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
// JDK 17+ (모듈 시스템) 호환을 위한 설정 - Hibernate 5.x, Atomikos, JAXB 등
jvmArgs = [
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
'--add-opens', 'java.base/java.math=ALL-UNNAMED',
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
'--add-opens', 'java.base/java.util.concurrent=ALL-UNNAMED',
'--add-opens', 'java.base/java.net=ALL-UNNAMED',
'--add-opens', 'java.base/java.text=ALL-UNNAMED',
'--add-opens', 'java.base/java.io=ALL-UNNAMED',
'--add-opens', 'java.base/sun.util.calendar=ALL-UNNAMED',
'--add-opens', 'java.rmi/sun.rmi.transport=ALL-UNNAMED',
'--add-opens', 'java.sql/java.sql=ALL-UNNAMED',
]
sourceResources sourceSets.main // processResources 필터 우회 (dev yml 직접 참조)
args = ["--spring.profiles.active=dev"]
}
sourceSets {
main {
java {
srcDir 'src/main/java'
srcDir 'build/generated/sources/annotationProcessor/java/main'
}
}
}
configurations {
annotationProcessor
}
compileJava {
options.annotationProcessorPath = configurations.annotationProcessor
options.compilerArgs += ["-parameters"]
options.encoding = 'UTF-8'
}
processResources {
exclude { details ->
details.file.name.startsWith('application-') &&
details.file.name.endsWith('.yml') &&
!(details.file.name in ['application-stage.yml', 'application-prod.yml'])
}
}
test {
useJUnitPlatform()
enabled = true
}
bootWar {
archiveFileName = "eapim-portal-boot.war"
}
task bootWarDev(type: org.springframework.boot.gradle.tasks.bundling.BootWar) {
group = 'build'
description = 'dev 프로파일용 실행 가능 WAR (application.yml + application-dev.yml 포함)'
dependsOn compileJava
mainClass = bootWar.mainClass
classpath = sourceSets.main.runtimeClasspath
// processResources 결과물 포함 (stage, prod yml 제외된 상태)
from(processResources.destinationDir)
// application.yml, application-dev.yml 추가 (중복 시 srcDirs 파일 우선)
duplicatesStrategy = DuplicatesStrategy.INCLUDE
from(sourceSets.main.resources.srcDirs) {
include 'application.yml'
include 'application-dev.yml'
}
archiveFileName = "eapim-portal-dev.war"
}//gradlew clean bootWarDev, java -jar build/libs/eapim-portal-dev.war --spring.profiles.active=dev
war {
archiveFileName = "eapim-portal.war"
from('src/main/resources/jeus-web-dd.xml') { into 'WEB-INF' }
from('src/main/resources/weblogic.xml') { into 'WEB-INF' }
}
task printSourceSets {
doLast {
sourceSets.each { srcSet ->
println "SourceSet: ${srcSet.name}"
println " Java srcDirs : ${srcSet.allJava.srcDirs}"
println " Resources : ${srcSet.resources.srcDirs}"
println " Output dir : ${srcSet.output.classesDirs.asPath}"
}
}
}
// CryptoCli 실행 task (bcrypt 지원)
task cryptoCli(type: JavaExec) {
mainClass = 'com.eactive.ext.kjb.safedb.CryptoCli'
classpath = sourceSets.main.runtimeClasspath
standardInput = System.in
// SafeDB 라이브러리 경로 추가 (리눅스)
classpath += files("/safedb/JavaAPI/config")
classpath += fileTree(dir: "/safedb/JavaAPI/lib", include: ["*.jar"])
// CLI 인자 전달: ./gradlew cryptoCli --args="bcrypt hash password123"
if (project.hasProperty('args')) {
args project.args.split('\\s+')
}
}