From bb845dfbba14c491d0ff1094bef144af810888fa Mon Sep 17 00:00:00 2001 From: curry772 Date: Wed, 11 Mar 2026 10:16:29 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EC=BB=AC=20=EA=B0=9C=EB=B0=9C?= =?UTF-8?q?=ED=99=98=EA=B2=BD=20=EC=84=A4=EC=A0=95=20=EB=B0=8F=20bootRun?= =?UTF-8?q?=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build.gradle: bootRun에 sourceResources, dev 프로파일 적용 - application-dev.yml: DB 접속 정보를 로컬 Docker Oracle로 변경 - logback-spring.xml: dev 프로파일에 CONSOLE appender 추가 - BOOTRUN_SETUP_GUIDE.md: Eclipse Terminal 기반 bootRun 실행 가이드 추가 --- BOOTRUN_SETUP_GUIDE.md | 173 ++++++++++++++++++ build.gradle | 11 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 4 +- .../custom/config/KjbPasswordEncoder.java | 14 +- src/main/resources/application-dev.yml | 10 +- src/main/resources/logback-spring.xml | 1 + 7 files changed, 201 insertions(+), 14 deletions(-) create mode 100644 BOOTRUN_SETUP_GUIDE.md diff --git a/BOOTRUN_SETUP_GUIDE.md b/BOOTRUN_SETUP_GUIDE.md new file mode 100644 index 0000000..a61affb --- /dev/null +++ b/BOOTRUN_SETUP_GUIDE.md @@ -0,0 +1,173 @@ +# eapim-portal 로컬 개발 환경 실행 가이드 + +> Eclipse Terminal에서 `gradlew bootRun`으로 기동하는 방법 + +--- + +## 환경 구성 개요 + +| 항목 | 내용 | +|------|------| +| DB | 로컬 Docker Oracle 19c | +| 포트 | 8080 | +| 프로파일 | dev | +| 실행 방법 | Eclipse Terminal → `gradlew.bat bootRun` | + +--- + +## 1. 사전 준비: 로그 디렉토리 생성 + +최초 1회만 실행 (없으면 기동 실패) + +```cmd +mkdir C:\Log\eapim\portal +mkdir C:\Log\App\eapim +``` + +--- + +## 2. Docker Oracle 기동 + +```cmd +cd D:\eActive\workspaces\elink-djbank\docker\ekjb +docker-compose up -d +``` + +Oracle 완전 기동 확인 (처음 기동 시 3~5분 소요): + +```cmd +docker logs -f oracle +``` + +`DATABASE IS READY TO USE!` 메시지 확인 후 다음 단계 진행. + +--- + +## 3. Eclipse Terminal에서 bootRun 실행 + +### Eclipse Terminal 열기 + +`Window` → `Show View` → `Terminal` +→ 우측 상단 **+** 클릭 → **Local Terminal** 선택 + +### 실행 명령어 + +```cmd +cd D:\eActive\workspaces\elink-djbank\eapim-portal +gradlew.bat bootRun +``` + +### 기동 성공 확인 + +``` +##### PortalApplication Ready ##### +``` + +브라우저에서 `http://localhost:8080` 접속 확인. + +--- + +## 4. 수정된 파일 목록 + +### 4-1. `src/main/resources/application-dev.yml` + +DB 호스트를 원격 서버에서 로컬 Docker로 변경: + +```yaml +ems: + datasource: + jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM # 변경 + username: EMSAPP + password: elink1234 + +gateway: + datasource: + jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM # 변경 + username: AGWAPP + password: elink1234 +``` + +### 4-2. `build.gradle` + +`bootRun` 태스크에 `sourceResources` 추가: + +```groovy +bootRun { + sourceResources sourceSets.main // processResources 필터 우회 (dev yml 직접 참조) + args = ["--spring.profiles.active=dev"] +} +``` + +> **이유**: `processResources`가 `application-dev.yml`을 빌드 출력에서 제외하도록 설정되어 있어, +> `sourceResources sourceSets.main`을 추가해야 `bootRun` 실행 시 소스 디렉토리를 직접 참조함. + +### 4-3. `src/main/resources/logback-spring.xml` + +`dev` 프로파일에 CONSOLE appender 추가 (콘솔 로그 출력): + +```xml + + + + + + +``` + +### 4-4. `.classpath` + +MapStruct 등 Gradle annotation processor 생성 소스를 Eclipse 소스 폴더로 추가: + +```xml + + + + + + +``` + +> **이유**: Eclipse는 Gradle annotation processing을 자동 실행하지 않으므로, +> `gradlew.bat compileJava` 실행 후 생성된 소스 경로를 Eclipse 빌드 경로에 수동 추가 필요. + +--- + +## 5. Annotation Processor 소스 재생성 + +소스 구조 변경(매퍼 추가 등) 시 재실행 필요: + +```cmd +cd D:\eActive\workspaces\elink-djbank\eapim-portal +gradlew.bat compileJava +``` + +이후 Eclipse에서 `Project` → `Clean` 실행. + +--- + +## 6. Eclipse에서 직접 기동이 안 되는 이유 + +Eclipse는 참조 프로젝트(`elink-online-core-jpa`)의 test scope 의존성을 구분하지 않고 +런타임 클래스패스에 모두 포함시킵니다. + +이로 인해 Spring Boot 버전 충돌 발생: + +| 출처 | jar | 충돌 대상 | +|------|-----|-----------| +| `elink-online-core-jpa` (test) | `spring-boot-autoconfigure:2.6.15` | eapim-portal `2.7.18` | +| `elink-online-core-jpa` (test) | `spring-core:5.3.27` | eapim-portal `5.3.31` | + +→ `gradlew bootRun`은 Gradle의 dependency management(BOM)로 버전을 통일하므로 이 문제가 없음. + +--- + +## 7. Docker Oracle 계정 정보 + +| 항목 | 값 | +|------|----| +| Host | localhost | +| Port | 1599 | +| SID | DAPM | +| EMS 계정 | EMSAPP / elink1234 | +| GW 계정 | AGWAPP / elink1234 | diff --git a/build.gradle b/build.gradle index e089aa4..918045e 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,14 @@ 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" @@ -27,7 +35,7 @@ dependencies { implementation project(':elink-online-core-jpa') implementation project(':elink-portal-common') - implementation project(':kjb-safedb') +// implementation project(':kjb-safedb') implementation('org.springframework.boot:spring-boot-starter') implementation 'org.springframework.boot:spring-boot-starter-jta-atomikos' @@ -115,6 +123,7 @@ bootRun { // 디버깅 사용시에는 아래 내용 주석 해제 하세요 // jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005' + sourceResources sourceSets.main // processResources 필터 우회 (dev yml 직접 참조) args = ["--spring.profiles.active=dev"] } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 32b15f0..20db9ad 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=http\://192.168.240.178\:18082/repository/gradle-dist/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 43bae24..6406d23 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,5 +7,5 @@ project (':elink-online-core-jpa').projectDir = new File(settingsDir, "../eapim- project (':elink-portal-common').projectDir = new File(settingsDir, "../elink-portal-common") -include 'kjb-safedb' -project (':kjb-safedb').projectDir = new File(settingsDir, "../kjb-safedb") \ No newline at end of file +//include 'kjb-safedb' +//project (':kjb-safedb').projectDir = new File(settingsDir, "../kjb-safedb") \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java b/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java index 07ec846..c404f92 100644 --- a/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java +++ b/src/main/java/com/eactive/apim/portal/custom/config/KjbPasswordEncoder.java @@ -1,6 +1,6 @@ package com.eactive.apim.portal.custom.config; -import com.eactive.ext.kjb.safedb.KjbSafedbWrapper; +//import com.eactive.ext.kjb.safedb.KjbSafedbWrapper; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @@ -11,14 +11,16 @@ public class KjbPasswordEncoder implements PasswordEncoder { @Override public String encode(CharSequence rawPassword) { String bcryptHash = bcryptEncoder.encode(rawPassword); - KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance(); - return safedb.encryptNotRnnoString(bcryptHash); +// KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance(); +// return safedb.encryptNotRnnoString(bcryptHash); + return bcryptHash; } @Override public boolean matches(CharSequence rawPassword, String encodedPassword) { - KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance(); - String bcryptHash = safedb.decryptNotRnno(encodedPassword); - return bcryptEncoder.matches(rawPassword, bcryptHash); + return bcryptEncoder.matches(rawPassword, encodedPassword); +// KjbSafedbWrapper safedb = KjbSafedbWrapper.getInstance(); +// String bcryptHash = safedb.decryptNotRnno(encodedPassword); +// return bcryptEncoder.matches(rawPassword, bcryptHash); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index fb5f832..376e3fb 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -21,20 +21,22 @@ spring: ems: datasource: - jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM + jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM +# jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM # jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/PAPM driver-class-name: oracle.jdbc.OracleDriver username: EMSAPP - password: EMSAPP123! + password: elink1234 gateway: datasource: - jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM + jdbc-url: jdbc:oracle:thin:@//localhost:1599/DAPM +# jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/DAPM # jdbc-url: jdbc:oracle:thin:@//192.168.240.177:1599/PAPM driver-class-name: oracle.jdbc.OracleDriver username: AGWAPP - password: AGWAPP123! + password: elink1234 portal: auth-virtual-code: 654321 diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index b4ab3c5..c595f5a 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -82,6 +82,7 @@ +