IntelliJ – maven-default-http-blocker build warning 해결

Eclipse IDE 가 너무 무겁고, 반은이 느려 많은 사람들이 IntelliJ 를 사용하고 있죠. 그런데, 어느시점 부터… maven project 에서 build 를 하면, 0.0.0.0 IP 의 default http blocker warning 이 나오는 것을 볼수 있습니다. 오늘은 해당 warning 을 해결 하여 warning 메시지도 없애고, build 속도도 조금더 빨라질수 있게 설정을 변경해 보려 합니다.

현상과 원인

외부 library 를 포함한 maven project 에서 build 하면, 아래와 유사한 maven-default-http-blocker 를 통해 download 및 transfer failed 관련 warning message 가 build log 에 남습니다.

해당 원인은 maven 3.8.x 수정으로 부터 발생된 것으로 추정 됩니다. (github commit 보기)

Downloading from maven-default-http-blocker: http://0.0.0.0/org/locationtech/jts/jts-core/maven-metadata.xml

[WARNING] Could not transfer metadata org.locationtech.jts:jts-core/maven-metadata.xml from/to maven-default-http-blocker (http://0.0.0.0/): transfer failed for http://0.0.0.0/org/locationtech/jts/jts-core/maven-metadata.xml
build log

해결 방법

크게는 2가지 방법을 생각해볼수 있습니다.

첫번째는 원인이 된 default blocker 를 찾아서 설정을 없애는것 입니다. 해당 파일은 maven 이 설치된 폴더의 conf/settings.xml 파일 입니다. ${maven.home}/conf/settings.xml

해당 파일에서 위의 구문을 찾아 삭제 하거나, 주석처리하여 해당 설정의 적용을 받지 않도록 조치하는것 입니다.

윈도우즈 환경의 경우 해당 파일에 직접 접근이 가능하고, 수정도 가능합니다. 하지만, 해당 파일은 maven application 이 설치 되면서 가지고 있는 default 설정 파일입니다. 개인용 PC 이고, 혼자만 사용한다면 해당 변경은 크게 문제 되지 않을것 입니다.하지만, IntelliJ 의 경우, maven 을 bundle 로 포함 package(plugin) 형태로 설치된 상태 이기 때문에, upgrade 및 재설치 등등의 이유로 해당 설정이 변경 되거나, 참조 되지 않는 문제가 발생 될 수 있습니다.

두번째 방법은 .m2/settings.xml 파일을 이용하는 방법 입니다. ${user.home}/.m2/settings.xml

해당 설정파일은 사용자 설정 파일로, 동일한 설정이 있는경우, 이를 merge 하여 사용하게됩니다. 즉, global 설정이 모든 외부 참조를 http://0.0.0.0 통해 요청되기 한 설정인데, 어떠한것도 해당 URL 로 요청되지 않도록 재정의 하여 설정한다면, build 시 default blocker 에 의해 library 를 요청하는 작업을 없애게 되는것 입니다.

해당 경로에 settings.xml 파일이 없다면 새로 생성하면 됩니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
     <mirrors>
          <mirror>
               <id>maven-default-http-blocker</id>
               <mirrorOf>dummy</mirrorOf>
               <name>Dummy mirror to override default blocking mirror that blocks http</name>
               <url>http://0.0.0.0/</url>
         </mirror>
    </mirrors>
</settings>

maven settings.xml 파일에 대해서는 다른 글에서 좀더 자세히 적어 보겠습니다.

참조 사이트

stackoverflow : https://stackoverflow.com/questions/67001968/how-to-disable-maven-blocking-external-http-repositories