분류 전체보기 290

[Troubleshooting] Maven "was cached in the local repository" — 폐쇄망 빌드 서버에서 캐시된 실패 처리

parent POM을 Nexus에 올렸는데도 빌드가 또 실패했다. 원인은 Maven이 이전에 실패한 해석 결과를 로컬 캐시에 저장해두고 계속 실패로 처리하고 있었기 때문이었다. 1. 증상parent POM을 Nexus에 올리고 다시 빌드를 돌렸는데 또 같은 에러가 떴다.[ERROR] Failed to execute goal on project my-project: Could not resolve dependencies ... Failure to find com.github.librepdf:openpdf-parent:pom:1.3.30.jaspersoft.2 in http://nexus.internal:8081/repository/maven-public/ was cached in the..

Java/Maven 2026.06.03

[Troubleshooting] Maven parent POM이 Nexus에 없어서 빌드 실패 — mvn dependency:list의 함정

폐쇄망 Nexus에 의존성을 올렸는데도 빌드가 실패했다. 원인은 mvn dependency:list가 parent POM을 출력하지 않는다는 점이었다. 이 함정과 해결 방법을 정리한다. 1. 증상로컬 .m2에서 의존성을 수집해 Nexus에 올리고 폐쇄망 TeamCity 빌드를 돌렸더니 아래 에러가 떴다.Could not resolve dependencies for project ... Could not find artifact com.github.librepdf:openpdf-parent:pom:1.3.30.jaspersoft.2 in nexus (http://nexus.internal:8081/repository/maven-public/)openpdf는 분명히 올렸는데 왜 openpdf-par..

Java/Maven 2026.06.03

[폐쇄망 CI/CD] Maven 의존성을 Nexus에 자동 업로드하기

외부 인터넷이 차단된 폐쇄망 환경에서 Maven 프로젝트의 CI/CD를 구축하면서 겪은 의존성 관리 문제와 해결 과정을 정리한다. 1. 배경회사 보안 규정상 외부 인터넷이 막힌 폐쇄망 서버에 Spring Boot 기반 사내 시스템을 배포해야 했다. TeamCity로 CI/CD 파이프라인을 구성했는데, 빌드 서버가 Maven Central에 접근할 수 없으니 의존성을 어디선가 가져와야 했다.해결 방향은 세 단계로 정리됐다.내부망에 Nexus Repository Manager 구축개발자 PC의 로컬 .m2 캐시에서 필요한 의존성만 추려서 Nexus에 업로드CI/CD 빌드 서버는 Nexus만 바라보도록 settings.xml 설정 2. 환경 정보항목값Nexus URL내부망 Nexus 서버 주소업로드 레포ho..

Java/Maven 2026.06.03

[Troubleshooting] Spring Boot 2.3 + JEUS 로그 라이브러리 충돌 해결

Spring Boot 2.3 기반 프로젝트를 JEUS에 배포하는 과정에서 로그 라이브러리 충돌 문제가 발생했다.특이한 점은 로컬에서 src 폴더를 직접 구동할 때는 아무 문제가 없었다는 것이다. 빌드된 target 폴더를 실행하거나 JEUS에 배포할 때만 문제가 생겼다. 1. 문제 상황로컬 Smart Tomcat에서 소스(src) 폴더를 직접 지정해 실행하면 정상 동작했다.그런데 빌드 결과물인 target 폴더를 실행 대상으로 잡거나 운영 서버(JEUS)에 배포하면 Multiple SLF4J bindings 에러와 함께 기동이 실패했다. SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/.../logb..

Java/Maven 2026.05.05

[Maven] 외부망에서 .m2 복사했는데 내부망 빌드 실패할 때

외부망에서 빌드를 성공시킨 뒤 .m2/repository 폴더를 통째로 내부망에 복사했다.로컬에 라이브러리가 다 있으니 문제없을 거라고 생각했다. 그런데 내부망에서 빌드를 돌리자 외부 저장소(Central)에 접속을 시도하며 Dependency Resolution 에러가 발생했다.파일은 분명히 있는데, Maven이 계속 외부로 나가려 했다. 1. 원인: _remote.repositories 파일Maven은 라이브러리를 다운로드할 때 해당 파일이 어떤 원격 저장소에서 왔는지를 기록하는 메타데이터 파일을 함께 생성한다. 파일명은 _remote.repositories 또는 _maven.repositories다. 이 파일에는 출처 저장소 정보가 기록되어 있다. 예를 들어 중앙 저장소에서 받은 파일이라면 cen..

Java/Maven 2026.05.05

[Maven] clean / package / --offline / -U 실무 정리

Maven을 쓰다 보면 아래 명령어들을 습관처럼 사용하게 된다. mvn clean packagemvn clean package -Umvn clean package --offline 그런데 각각의 의미를 정확히 모르고 쓰면 문제가 생긴다.CI/CD에서 빌드가 실패하거나, 캐시가 꼬이거나, Nexus 이슈로 이어지는 경우가 실제로 있었다.이번 글은 실제 장애 케이스 기준으로 핵심만 정리한다. 1. clean – 빌드 초기화 이전 빌드 결과를 삭제하는 옵션이다.내부적으로는 target/ 디렉토리를 통째로 지운다.이게 왜 필요하냐면, 이전 빌드의 잔여물이 남아있으면 클래스 충돌이 발생할 수 있기 때문이다.실무에서는 CI 빌드에 거의 무조건 포함한다.mvn clean package 2. package – 실제..

Java/Maven 2026.05.05

[AI 자동화] 웹접근성(WA) 대응 - 3,300개 이미지 Alt 텍스트 생성 자동화

1. 문제 배경: "이미지 alt를 다 달아야 한다" 공공기관 웹페이지 고도화 작업을 진행하면서 거쳐야 했던 WA 인증(웹 접근성 인증) 과정이 있었다.여기서 요구하는 항목 중 하나가“모든 이미지에 대체 텍스트(alt)를 제공해야 한다”는 것이었다.요구사항만 보면 이미지 설명을 작성하면 되는 단순한 작업처럼 보였다. 하지만 실제 데이터를 확인해보니 상황이 달랐다.이미지가 포함된 게시글이 약 911개였고, 전체 이미지 수는 약 3,300개였다.이 순간 느낀 것은 하나였다.이건 사람이 일일이 처리하면 공수가 크게 발생하는 작업이다. 2. 초기 작업 방식 (ChatGPT 기반 수작업)초기에는 ChatGPT를 활용하여 이미지를 하나씩 처리했다.이미지를 복사하여 전달하고 해당 이미지에 대한 설명을 생성한 뒤 그..

Record/IT Diary 2026.03.21

[Trouble Shooting] 지도 포함 리포트 이미지 삽입 문제 해결

최근에 참여했던 프로젝트에서 출장 여비정산 리포트를 개발 과업 중에“주행거리 증빙 화면(지도 포함)”을 이미지로 캡쳐해 ClipReport에 삽입해야 하는 과정이 있었다. 요구사항은 단순해 보였다.지도 화면이 반드시 포함된 상태로 캡쳐되어야 하고매번 다른 주행 경로를 동적으로 캡쳐해야 하며최종 결과는 리포트 안에서 이미지로 출력되어야 했다하지만 실제 구현은 예상보다 훨씬 복잡했다. 이번 이슈는 아래와 같은 환경에서 발생했다.Report: ClipReportFrontend: ReactBackend: Spring (Java)Screenshot: Playwright (Headless Chromium)Map SDK: Kakao Map SDK그리고 문제는 단순히 “캡쳐가 안 된다” 수준이 아니었다. 이슈는 크게 ..

Viewport(뷰포트) 란?

웹페이지 반응형 작업을 하면서 이런 일이 있었다. 미디어쿼리(@media)를 분명히 작성했는데모바일에서 전혀 적용되지 않았다. 개발자도구(Device Toolbar)에서는 정상처럼 보이는데실제 모바일에서는 레이아웃이 줄어들지 않았다. 원인을 확인해보니 설정이 빠져 있었다. 이 한 줄을 추가하자 그동안 먹지 않던 미디어쿼리가 바로 정상 동작했다. 그래서 왜 viewport를 넣어야 반응형이 제대로 작동하는 건지 그 내용을 정리해보려고 한다. Viewport 무엇인가?Viewport는 사용자가 현재 보고 있는 웹 페이지의 보이는 영역이다.즉, 브라우저가 레이아웃을 계산할 때 기준으로 삼는 화면 영역이다. 문제는 모바일 브라우저의 기본 동작 방식이다. viewport 설정이 없으면모바일 브라우저는 과거 P..

FrontEnd 2026.02.18

웹 UI 기본 내비게이션 용어 완전 정리: GNB, LNB, SNB, FNB

웹 개발하거나 사이트 구조를 공부하다 보면 내비게이션 메뉴 용어(GNB, LNB, SNB, FNB)를 마주하게 된다. 초보자는 물론, 프론트엔드/풀스택 개발자에게도 놓치기 쉬운 UI 기본 개념이다.이번 글에서는 이 내비게이션 개념들을 한눈에 파악할 수 있게 정리해보고자 한다. 보다 설명을 쉽게 하기 위해, 공공기관 사이트인 한국식품안전관리인증원(https://www.haccp.or.kr/main.do) 웹사이트를 실제 예시로 사용한다. 이 사이트는 식품 안전관리 인증 관련 정보를 제공하는 공공기관 홈페이지로, 다양한 내비게이션 구조가 잘 드러나는 대표적인 사례이다. 웹 내비게이션 바란?웹사이트에서 사용자가 목적한 콘텐츠로 쉽게 이동하도록 돕는 UI 메뉴이다.사용자는 이 메뉴를 통해 서비스 기능/페이지를..

FrontEnd 2026.02.18
반응형