티스토리 뷰
Nexus settings.xml 파일 없이 3rd party library 가져오기 (mirror & repositories)
호형 2021. 3. 22. 13:06프로젝트를 하다 보면 3rd party library를 사용할 일이 빈번하게 있다. 이를 Nexus에 등록하는 과정은 지난번에 다룬적이 있다. (궁금하다면 이곳을 참조하도록 하자.) 지난번에는 등록하는 과정이었다면 이제는 이것을 쓰는 과정이다.
필자는 개발환경을 구성하고 배포를 하였는데 구성해놓은 IDE 까지 모두 받은 사람들은 문제가 없었지만 git에서 소스만 pull 해서 사용하는 사람들에게는 문제가 있었다. 바로 3rd party library를 가져오지 못하는 문제였다. 개발환경을 그대로 사용하는 사람은 maven settings.xml 설정까지 모두 사용하기에 settings.xml 에 설정해놓은 mirror를 사용해 Nexus로부터 3rd party library를 가져올 수 있었지만 git에서 소스만 받은 사람은 settings.xml 이 없기에 문제가 된 것이다.
이 lastUpdated 파일만 생성이 되면서 필요한 jar는 받을수가 없다. 이런 현상을 방지하고자 어느 환경에서도 소스만 받아도 동작할 수 있도록 변경을 하였다.
AS-IS 구성방식 (settings.xml mirror 사용하는 방식)
<settings>
... 중략 ...
<mirrors>
<mirror>
<id>oingdaddy-repository</id>
<mirrorOf>*</mirrorOf>
<name>oingdaddy nexus repository</name>
<url>http://nexus.oingdaddy.com/repository/public/</url>
</mirror>
</mirrors>
기존 구성방식은 settings.xml 의 mirror를 사용하여 Nexus에 있는 repository의 내용을 가지고 왔다. 이 방식을 사용하기 위해서는 물론 settings.xml 파일을 만들어야 하고 이 파일을 IDE에 매핑을 시켜줘야한다. 즉 이만큼의 일을 더 추가적으로 해야 하는 것이다.
TO-BE 구성방식 (pom.xml에서 repository를 사용하는 방식)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
... 중략 ...
<repositories>
<repository>
<id>oingdaddy-repository-public</id>
<url>http://nexus.oingdaddy.com/repository/public/</url>
</repository>
</repositories>
이렇게 pom.xml에서도 간결하게 설정을 할 수 있다. 예시를 위해 설정을 최소한으로 했지만 이곳에 release or snapshot등의 설정도 가능하다.
참고로 repositories는 artifact를 받아오는 repository를 의미하며, pluginRepositories는 plugin을 받아오는 repository를 의미하므로 용도에 맞게 사용해야 한다.
끝!
'CI,CD > Build' 카테고리의 다른 글
Maven build 시 illegal character: '\ufeff' 오류 조치 (0) | 2021.05.27 |
---|---|
Nexus에 maven project deploy 시 Access denied to xxx.jar. 401, Unauthorized 오류 조치 (0) | 2021.03.30 |
maven project pom.xml : unknown error line 1 오류 (0) | 2021.01.11 |
Ant Build (build.xml) 기본 사용법 with Jenkins (0) | 2020.11.23 |
Ant build 시 error : unmappable character for encoding UTF-8 해결방법 (0) | 2020.09.29 |