본문 바로가기
Develop

[Error] Authentication failed for nexus 401 unauthorized

by 빈급 2024. 6. 15.

 오랜만에 메이븐 프로젝트를 분석해야 할 일이 생겼고 build 하는 과정에서 이 오류를 마주쳤고 간단하게 해결했습니다! 물론 간단하게 해결했다고 해서 시간이 짧게 걸린 건 아닙니다..! 서론은 그만하고 에러 발생 원인과 해결 방법 알아보겠습니다.

 

nexus 401 unauthorized 에러

 

 

Authentication failed for nexus 401 unauthorized 에러 발생 원인

 에러 내용을 읽어보면 nexus에 deploy 할 수 없기 때문에 발생했다는 것을 알 수 있습니다. 원인은 반환된 401 에러 코드를 통해 알 수 있는데 해당 코드는 유효한 인증 자격 증명이 없기 때문에 발생합니다!

 

 gradle을 사용해서 nexus에 deploy 할 때는 build.gradle 파일에서 repositories 부분에 nexus 주소만 적어주면 됐기 때문에 maven의 경우 따로 설정을 해줘야 한다는 걸 모르고 있었습니다.

 

 maven의 경우 nexus에 deploy 할 때 계정 정보가 필요하고 이는 settings.xml에서 설정할 수 있습니다.

 

Authentication failed for nexus 401 unauthorized 에러 해결 방법

 1. maven repository 경로를 찾습니다.

기본 경로는 다음과 같습니다.

더보기

windows : C:\Users\사용자계정\.m2\repository

linux : /home/사용자계정/. m2/repository

maven repository 위치

 

2. settings.xml 파일을 생성하고 nexus에 대한 서버 정보를 입력해 줍니다.

( xml 확장자를 가진 파일은 Intellij에서 생성한 다음에 옮겨서 만들어줬습니다.)

settings.xml 파일 생성

 

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
	<servers>
    	<server>
        	<id>${id}</id> <!-- binnary -->
            <username>${username}</username>
            <password>${password}</password>
        </server>
    </servers>
</settings>

 

settings.xml파일에서 id는 pom.xml에 있는 Nexus 관련 설정과 동일해야 합니다.

 

pom.xml

 

 이렇게 설정을 마치고 모든 파일을 잘 저장하고 빌드를 해주시면 됩니다. 그리고 켜주면 원래라면 잘 되어합니다!

 

 저의 경우 모든 설정을 마치고 나니 Colud not find artifact 오류가 떴습니다.. 어떤 경우인지에 따라 다르겠지만 먼저 해봐야 할 것은 mvn clean 후 install입니다! 왜인지 모르겠는데 메이븐은 이런 경우가 꽤 있다고 하는 거 같습니다..

error 2 화면

 

 

 

 mvn clean 말고 IDE를 껐다 켜주었는데 잘 실행됐습니다. 빌드되는 화면은 깜빡하고 캡쳐하지 못했습니다.. 오랜만에 메이븐을 설정하다 보니 좀 애를 먹었는데 다음에는 에러 없이 바로 실행할 수 있는 개발자가 되는 것을 목표로..!