Java/Maven 9

[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

[Maven] mvn clean install

1. mvn clean, install 명령어는? clean: 빌드시 생성된 모든 것들을 삭제해준다. Maven에서 자체 빌드 수명 주기 단계이다.(action이나 task로 생각할 수 있다.) 주로 빌드 결과물인 target폴더의 내용을 모두 삭제해준다. install: 프로젝트를 빌드하여 jar 실행 파일을 만들어주는 명령어이다. local repository에 패키지를 배포한다. 의존성 있는 다른 프로젝트에서 local repository에 존재하는 패키지를 참조할 수 있게 된다. 2. 메이븐 생명주기 (Maven lifecycle) (1). process-resources /src/main/resources 디렉토리를 에 생성한다. (2) complie 소스코드를 컴파일해서 클래스를 에 생성한다...

Java/Maven 2022.09.22

Maven repository 설정

1. 개요 maven을 이용하여 원하는 라이브러리를 손쉽게 프로젝트에 추가할 수 있다. 이 때, 라이브러리가 저장된 곳을 maven repository라고 한다. 1) maven local repository의 기본 경로 windows : c:\Users\사용자계정\.m2\repository linux : /home/사용자계정/.m2\repository 2) maven repository 경로 수정 방법 maven/conf 경로 안에 settings.xml 파일을 이용하여 maven repository 경로 수정이 가능하다. 사이에 경로를 추가하면 된다. (덧붙여 위의 설정파일을 보면 Default 경로가 ${user.home}/.m2/repository임을 알수 있다.) 3) 서버 메이븐 폴더 위치 찾..

Java/Maven 2022.08.03

Maven에 대해

1. Maven이란? Maven이란 자바용 프로젝트 관리 도구이다. (공식사이트: Apache Maven Project) Maven은 프로젝트의 전체적인 LifeCycle을 관리하는 관리도구이다. 프로젝트 객체 모델(Proejct Object Model:POM) 이라는 개념을 바탕으로 프로젝트의 의존성 관리, 라이브러리 관리, 프로젝트 LifeCycle 관리 기능 등을 제공한다. 플러그인을 기반으로 소스코드로부터 배포 가능한 산출물을 만들어내는 빌드 기능을 제공한다. 빌드(build) 란? 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물이다. 이를 좀더 쉽게 풀어 말하자면 우리가 작성한 소스코드(Java), 프로젝트에서 쓰인 각각의 파일 및 자원 ..

Java/Maven 2022.08.03
반응형