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" 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' 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' } test { useJUnitPlatform() enabled = true } bootWar { archiveFileName = "eapim-portal-boot.war" } 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+') } }