배포를 위해 도커 이미지를 빌드하고 ECR에 푸쉬하기 전, Gradle로 빌드를 하려는 중에 발생한 오류이다. ./gradlew clean build 명령어를 실행했을 때, 컴파일은 정상적으로 진행되었으나 :test작업에서 빌드가 실패했다.
PersistenceException**이 발생한 것이다.
<aside> ⚠️
> Task :test FAILED: 테스트 코드를 실행하는 :test 단계에서 문제가 발생
Caused by: jakarta.persistence.PersistenceException: PersistenceException은 JPA(Java Persistence API), 즉 데이터베이스 연동 기술과 관련된 문제가 발생했을 때 나타나는 예외
Caused by: java.lang.RuntimeException at DriverDataSource.java: DriverDataSource는 Spring이 데이터베이스에 실제 연결을 시도할 때 사용하는 클래스로, 이 예외는 데이터베이스에 접속을 시도했지만 연결이 실패했다는 의미
</aside>
해결 방안:
.jar 파일을 사용하여 Docker 이미지를 정상적으로 빌드하고 ECR에 푸시할 수 있었다.QueryDSL 설정을 추가하고 ./gradlew clean build 명령어로 빌드를 시도하는 중에 발생한 오류이다. 컴파일은 정상적으로 진행되었으나, :test 작업에서 새로 추가된 QueryDSL 관련 테스트 코드가 실행되면서 빌드가 실패했다.
DataSource**를 찾지 못해 예외가 발생하고 테스트가 실패했다.<aside> ⚠️
Caused by: org.springframework.util.PlaceholderResolutionException: application.yml의 ${SPRING_DATASOURCE_URL}과 같은 설정 값(Placeholder)을 찾지 못했다는 의미입니다.
</aside>
해결 방안:
로컬로 Spring Boot 웹 애플리케이션 개발할 때, 간단하지만 자주 발생하는 오류이기에 최적화된 해결 방법을 알아보고자 정리하려고 한다. 이 경우 다른 애플리케이션이 해당 포트를 점거하고 있기에 발생하는 오류로 기존에 실행했던 Spring Boot 애플리케이션이 제대로 종료되지 않고 백그라운드에서 계속 실행 중일 때 주로 발생한다.

<aside> ⚠️
Web server failed to start. Port 8080 was already in use.
</aside>
해결 방안:
기존에 실행 중인 프로세스 종료하기
→ 명령 프롬프트에서 netstat -ano | findstr 8080로 PID 확인
→ taskkill /F /PID [확인한 PID 번호]
기존에 사용 중인 포트를 계속해서 사용해야 한다면 다른 포트를 사용하도록 변경
→ application.yml에서 server: port: 8081
****“KB국민은행 - 금융 교육 및 연습 웹 서비스” 오픈소스를 개선하는 프로젝트를 진행하면서 발생한 오류로 서버를 정상적으로 실행했으나, 뷰(JSP) 리소스를 못 찾아서 404 에러가 발생했다.
