Maven의 pom.xml에 외부 Dependency를 추가할 땐
거의 대부분 Maven 원격 Repository에서 받는다. (회사 저장소나 다른 저장소를 이용하는 경우도 있음)
그러나 가~아끔 특정 jar를 Maven dependency로 추가해야하는 경우가 있는데
어떻게 해야할까?
구글링을 해보면 다양한 방법이 있는데 저는 로컬 저장소를 이용해
dependency를 추가하는 방향으로 설정했습니다.
- 이 때 url의 file:// 은 로컬 경로를 바라봅니다.
- project.basedir은 pom.xml이 포함된 프로젝트 상단 경로입니다.
- 내가 추가하고 싶은 jar의 groupId, artifactId, version을 pom.xml의 dependecy에 추가합니다.
- 참고 : http://lng1982.tistory.com/202
- U 옵션은...
-U, --update-snapshots : Forces a check for updated releases and snapshots on remote repositories
거의 대부분 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
'빌드관리시스템 > Maven' 카테고리의 다른 글
[Maven] 특정 Test만 따로 수행하기 (0) | 2018.03.26 |
---|---|
[Eclipse] STS 3.8.1 이상의 버전에서 Maven 2.x (0) | 2016.08.11 |