본문 바로가기

빌드관리시스템/Maven

[Maven] local jar를 dependency 추가하기

Maven의 pom.xml에 외부 Dependency를 추가할 땐
거의 대부분 Maven 원격 Repository에서 받는다. (회사 저장소나 다른 저장소를 이용하는 경우도 있음)

그러나 가~아끔 특정 jar를 Maven dependency로 추가해야하는 경우가 있는데
어떻게 해야할까?

구글링을 해보면 다양한 방법이 있는데 저는 로컬 저장소를 이용해
dependency를 추가하는 방향으로 설정했습니다.

pom.xml


<?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">

...
...
<packaging>jar</packaging>
...
...
...

	<repositories>
		<repository>
			<id>sample-repository</id>
			<name>local repository</name>
			<url>file://${project.basedir}/lib</url>
		</repository>
	</repositories>

... 
...
...
</project>
- repository태그로 로컬 저장소를 추가합니다. (id와 name은 마음대로하시면 됩니다.)
- 이 때 url의 file:// 은 로컬 경로를 바라봅니다.
- project.basedir은 pom.xml이 포함된 프로젝트 상단 경로입니다.
    - 예) sampleProject (O)
            sampleProject/src/main/resources (X)


- 내가 추가하고 싶은 jar의 groupId, artifactId, version을 pom.xml의 dependecy에 추가합니다.


<dependencies>
		<dependency>
			<groupId>com.yst</groupId>
			<artifactId>sample-study</artifactId>
			<version>2.1.0</version>
		</dependency>
</dependencies>
- maven의 디렉토리 구조대로 로컬 저장소에도 동일하게 구성합니다
sampleProject
ㄴ lib
    ㄴ com
         ㄴ yst
             ㄴ sample-study
                   ㄴ 2.1.0
                         ㄴ  내가넣을.jar

이상하네.. 이렇게 했는데 Maven은 이녀석을 못찾는다

- 이 경우 mvn을 package로 빌드하면 된다고 한다.
- 참고 : http://lng1982.tistory.com/202

그래도 빌드가 안되는데...

Failure to find ~~블라블라.jar ~~ was cached in the local repository, resolution will not be reattempted until the update interval of MyRepo has elapsed or updates are forced

- 흠 캐시되서 못찾는다고 하는것 같은데.. maven 명령어에 -U 옵션을 추가하면 해결이 되었다!!!

mvn clean compile package -U 
- 참고 : https://stackoverflow.com/questions/4856307/when-maven-says-resolution-will-not-be-reattempted-until-the-update-interval-of
- U 옵션은...
-U, --update-snapshots : Forces a check for updated releases and snapshots on remote repositories