본문 바로가기
자바웹프로그래밍/maven

pom.xml에 maven local 저장소(repository) or 현재 디렉토리 library(라이브러리)가져오기 ,프로젝트 내부 라이브러리 추가 , 가져오기

by 디찌s 2022. 5. 28.
728x90
반응형

업무를 하다보면, 여러가지 종속 library를 사용하게 된다. 이때 발생하는 문제

  1. maven 중앙 레포지토리(repository)를 사용하지 못할때
  2. 현재 maven 중앙 레포지토리(repository) 및 로컬 레포지토리(repository)에 참조가능한 라이브러리(libary)가 존재하지 않을때

두가지 문제를 해결하기 위해 어떤 방법을 쓸지 고민해보자

1.maven 중앙 레포지토리가(repository)아닌 로컬 레포지토리(repository) 구성

업무를 진행하다보면 내부망으로만 운영되기때문에 외부망인 central maven repository를 이용하지 못해

종속된 라이브러리를 가져오지 못하는 경우가 있다. 이때 사용할수 있는 local maven repository를 구성해보자

  1. 자신이 원하는 특정 폴더에 라이브러리를들 넣어 논다 예) /dizzy/lib <- 이안에 자신이 원하는 종속라이브러리를 넣어준다.
  2. 아래와 같이 pom.xml에 중앙 maven 저장소 url를 사용하는게 아니라 현재 자신이 구성해놓은 폴더 repository를 구성해준다.
<repositorys> 
	<repository> 
		<id>Myproject</id> 
		<name>Myproject custom</name> 
		<url>file:/dizzy/lib</url> 
	<repository> 
</repositorys>

 

 

  1. 위와 같이 레포지토리를 구성하면 maven은 위 경로를 따라가 현재 자신이 안에 있는 종속라이브러리를 /dizzy/lib 경로에서 찾아올것이다.



2.현재 maven 중앙 레포지토리(repository) 및 로컬 레포지토리(repository)에 참조가능한 라이브러리(libary)가 존재하지 않을때

 

위와같이 문제가있을경우 즉, 내부망이고 중앙 레포지토리에 파일이 존재하지않고, 로컬 레포지토리를 구성하기 싫다면 직접 현재 존재하는 library에 접근하여 종속된 라이브러를 등록할수있다.

 

1.pom.xml에 file path를 설정해주기

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <project.lib.path>${project.basedir}/WebContent/WEB-INF/lib</project.lib.path>
    </properties>

 

현재 나는 해당 프로젝트에 /WenContent/WEB-INF/lib에 다운로드 받을수없는 라이브러리를 넣어놓았다. 이유는 어차피 maven에서 build하면 저 경로에서 빌드해서 라이브러리를 묶은뒤 war를 만들기때문이다.

 

 

2.pom.xml에 라이브러리 경로가 있는 파일 지정해주기

 

        <dependency>
            <groupId>com.example.module</groupId>
            <artifactId>myDeleteModule</artifactId>
            <version>1.2</version>
            <scope>system</scope>
            <systemPath>${project.lib.path}/myDeleteModule-1.2.jar</systemPath>
        </dependency>

 

 

만약에 현재 자신이 만든 라이브러리가 있거나, 아니면 maven repository에서 더이상 다운받을수 없는 상황이라면 위와같은 방법으로 라이브러리를 불러와야한다.

 

만약에 내가 만든 라이브러리거나, 저장소에 없는 라이브러리가 myDeletemodule-1.2.jar라면,

위와 같이 groupId에 패키지 아이디를 적어주고 현재 system scope를 통해 '${project.lib.path}/myDeleteModule-1.2.jar' 를 불러와 줘야한다.

 

이런식으로 라이브러리를 불러오면 정상적으로 myDeleteModule-1.2.jar를 war파일로 build 해줄것이다.

 

 

3.intellij 사용시에 위와같은 방법으로 library를 등록해도 패키지 경로가 안잡힐때

 

1.file>project structure 로 들어간뒤 labraries에 있는 maven 저장소를 참조하는 라이브러리 및 로컬 라이브러리를 모두지우고

 

 

 

2.프로젝트 오른쪽 클릭후 maven 카테고리에 reload proejct 클릭 후 download sources를 클릭해주면 된다!

 

728x90
반응형

댓글