Software Engineering/기타

Maven 외부 라이브러리를 maven local repository에 직접 추가하는 방법

컴슈터 2024. 3. 22. 12:56


외부 라이브러리가 포함된 Java 웹 애플리케이션을 war로 배포하려고 하니, 배포 실패가 되면서 maven repository에서 외부 라이브러리가 누락되었다는 오류가 발생했다.

지금부터 누락된 라이브러리를 local maven repository에 직접 추가하는 작업을 진행하려고 한다. 예를 들어 외부 라이브러리 ImageConverter.jar 파일을 직접 추가하려고 한다.

lib 폴더에 jar 파일 넣기

프로젝트₩lib 폴더를 생성하여 아래처럼 maven dependency 형식대로 폴더를 만든다. maven의 디렉토리 구조대로 동일하게 구성한다.

lib 폴더
    -- com 폴더
        -- company 폴더
            -- ImageConverter 폴더
                -- 1.0.0 폴더
                    -- ImageConverter-1.0.0.jar 파일

버전은 임의로 1.0.0으로 정의했으며 jar 파일명에도 1.0.0 버전을 붙여서 ImageConverter-1.0.0.jar으로 명명했다. 

pom.xml 파일에 정보 기입하기

pom.xml 파일에 외부 라이브러리 jar의 groupId, artifactId, versjon을 추가한다.

<dependency>
    <groupId>com.company</groupId>
    <artifactId>ImageConverter</artifactId>
    <version>1.0.0</version>
</dependency>

여기까지만 실행하면 pom.xml에서는 not found 에러 메세지를 출력하는데 이유는 maven local repository에 해당 라이브러리가 배포되지 않았기 때문이다.

즉, pom.xml 파일에 정의되어 있는 의존성들은 모두 maven local repository를 참조하는데, 내 PC에서 m2 디렉토리 안에 ImageConverter.jar 파일이 존재하지 않아서 발생하는 것이다.

Maven Install 실행

이를 해결하기 위해서 아래 문법으로 maven install 하여 maven local repository에 ImageConverter-1.1.0.jar 파일을 배포시키면 된다.

case 1) Maven 설치된 경우

mvn install:install-file -Dfile=파일경로₩파일명.jar -DgroupId=그룹아이디 -DartifactId=아티팩트아이디 -Dversion=버전 -Dpackaging=jar

 

위 형식으로 실제로 작성하자면 아래와 같다.

mvn install:install-file -Dfile=.\lib\com\company\ImageConverter\1.0.0\ImageConverter-1.0.0.jar -DgroupId=com.company -DartifactId=ImageConverter -Dversion=1.0.0 -Dpackaging=jar

case 2) Maven 설치되지 않은 경우

만약 maven이 설치되지 않아서 mvn 명령어를 인식하지 못하는 경우, 아래처럼 mvn 명령어만 제외해도 정상적으로 실행이 된다. 프로젝트 우클릭 > Run As > Maven build > Goals에 아래 입력하여 Run 실행한다.

install:install-file -Dfile=.\lib\com\company\ImageConverter\1.0.0\ImageConverter-1.0.0.jar
 -DgroupId=com.company -DartifactId=ImageConverter -Dversion=1.0.0 -Dpackaging=jar


내 경우 maven이 설치되지 않은 환경이라서 case 2번으로 진행했다.


로컬 Maven repository에 지정한 외부 라이브러리가 저장된다. .m2 디렉토리 내에서 .jar 파일과 .pom파일이 생성되는 것을 확인한 다음, 외부 라이브러리가 포함된 Java 웹 어플리케이션을 war로 배포하니 정상적으로 실행되었다.

이처럼 third party library를 maven local repository에 배포시키기 위해서는 다른 개발자들도 로컬에서 maven install 명령어를 실행시켜야 하는 수고가 필요하다.