개발도구

maven-default-http-blocker 에러 발생 원인 및 해결 방법(feat. IntelliJ)

천방지축 개발노트 2024. 9. 10. 22:57

인텔리제이(IntelliJ)에 프로젝트 세팅을 하기 전에,

이클립스(Eclipse)에서 먼저 정상적으로 실행이 되는지 전부 확인하고 진행을 하는 편이다.

(아직 이클립스가 더 편함ㅠㅜ)

근데 Eclipse에서는 잘 동작하는 소스더라도 새롭게 IntelliJ에 첫 세팅을 하려고 하면 항상 문제가 발생한다. 이때 확인해 볼 부분이 몇 가지가 있는데,

해당 글에서는 Maven update 및 build 시 빌생하는 http blocker 에 대해서 얘기해보겠습니다.


 

Blocked mirror for repositories

Intellij에서 Maven update를 하려고보니 아래 에러 메시지를 뱉으면서 진행이 안된다.(당연한 말이지만 eclipse에서도 발생할 수 있다)

Could not transfer artifact org.springframework.boot:... from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories:

 

왜 이런 문제가 발생하는걸까?

이 모든 것의 원흉(?)이자 근본적인 원인은 IntelliJ IDEA는 설치 시 자체 내장된 Maven과 함께 settings.xml 파일을 제공하기 때문이다. 따라서 직접 외부 Maven을 명시적으로 지정하지 않으면, 자동으로 디폴트 내장 Maven과 그 설정 파일을 사용하게 된다.

Build, Execution, Deployment

그리고 비교적 최근에 설치한 IntelliJ에 내장된 Maven의 버전은 3.9.6

Maven은 3.8.1 버전부터 기본적으로 HTTP로 연결된 Repository로부터의 다운로드를 차단하는 'HTTP Blocker' 기능을 포함하고 있다. 보안 강화를 위한 것으로, 이 'HTTP Blocker'가 http에 대한 외부 연결을 막아 https의 사용을 강제하고 있던 것이였다.

 

다른 Maven을 사용하려면 위 사진과 동일한 경로인 [Settings -> Build, Execution, Deployment -> Build Tools-> Maven]에서 Maven home path의 경로가 올바르게 설정되어있는지 확인.(설정바꿨는데도 여전히 에러가 난다고요? 알고 있습니다)

 

어쨋든 이게 문제가 안되다면 다행이겠지만 보통 회사에서는 Nexus 등으로 라이브러리를 별도로 관리하는데, 이 내부망에 존재하는 Repository의 주소는 보통 https가 아닌 http로 관리되는 것 같다. Nexus에 SSL 인증서를 등록하여 HTTPS로 변경하면 모두가 편하겠지만, 이건 현실적으로 당장은 불가능하다. 그래서 관련 에러를 구글링해보면 해결책으로 아래 내용과 같이 설정파일(settings.xml)내 id가 'maven-default-http-blocker'인 부분을 주석 처리하는 방법들이 많이 있는 듯하다.

※ settings.xml 위치: C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.2.0.2\plugins\maven\lib\maven3\conf (버전 등의 이유로 중간 파일명 확인)

<mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
  <blocked>true</blocked> 
</mirror>

 

분명 이 방법으로 해결이 되는 것은 맞다. 근데 사실 내장 Maven 안 쓰려고 Maven home path 수정했던 것이고 이 또한 몇 번이나 제대로 설정했는지 확인했다... 심지어 ~/.m2/repository 파일 날리고 다시 강제 Maven update까지 했는데도 안된다. 왜 계속 build에 실패하는 거며 왜 위 파일까지 수정해야 하는 거지 싶어서 삽질한 결과, 그것은 바로 IntelliJ IDEA 자체의 캐시(Cache) 때문이라고 한다.🤢

 

IntelliJ는 프로젝트를 빠르게 열고 코드를 탐색할 수 있도록 프로젝트 파일과 의존성, 빌드 정보를 인덱싱하고 이를 IntelliJ 설정 디렉토리 내에 캐시로 저장한다. 따라서 IntelliJ에서 라이브러리가 제대로 import 되지 않거나 변경사항이 적용되지 않을 때 이 캐시를 지워주면 해결되는 경우가 있다.

 

IntelliJ IDEA의 캐시를 정리하는 방법은 [File → invalidate Caches...] 경로에서 'Invalidate and Restart' 버튼을 클릭하면 된다.

이러면 어렵게 설정 파일 건드리지 않고 기분 좋지 않게 문제 해결 완료.

별것도 아닌 게 시간을 잡아먹는다.😥