2014-02-18 3 views
1

위한 저장소로 프로젝트 폴더 사용 :Maven은 : 나는 다음과 같은 레이아웃 프로젝트가 LIB

enter image description here

내 목표는되었다 MVN 잠재적에 대한 추가 위치로 프로젝트 LIB 디렉토리에서 찾고있다합니다 예를 들어 j-text-utils.jar와 같은 maven 저장소에는없는 libs. 그래서 나는 여기에서 아이디어를했다 pom.xml 파일

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

이 추가 : MVN 컴파일을 실행하는 경우 http://randomizedsort.blogspot.co.il/2011/10/configuring-maven-to-use-local-library.html

,이 프로젝트 폴더에 관련 libs와 찾을 실패합니다.

위의 사항에 문제가 있습니까?

들으

+0

lib 폴더의 모든 파일을 중앙 저장소 나 다른 저장소에서 사용할 수없는 저장소 관리자에 설치하고 거기에서 사용하십시오. 그게 낫다. 예를 들어 Guava는 Maven 중심에서 사용할 수 있으므로 Maven 중심을 사용하기 만하면 수동으로 설치할 필요가 없습니다. 그 외에도 [google to j-text-utils] (http://code.google.com/p/j-text-utils/)의 저장소를 사용하면 처리가 더 간단 해집니다. – khmarbaise

답변

1

파일 기반 저장소를 설정하는 데는 아무런 문제가 없습니다. 하지만 가장 먼저 디렉토리 구조는 groupid/artifactid를 준수해야합니다.

set localrepopath=C:\path_to_repo_rootdir 
call mvn install:install-file -Dfile=xyz-1.2.jar -DgroupId=com.foo -DartifactId=xyz -Dversion=1.2 -Dpackaging=jar -DlocalRepositoryPath=%localrepopath% -DcreateChecksum=true 

디렉토리 아래에있는 모든 pom.xml, jar 파일, 체크섬 파일로 com \ foo \ 1.2 디렉토리를 생성합니다.

그런 다음 새로 설치된 이슈에 대한 종속성을 자신의 프로젝트 pom.xml에 정의해야합니다.

로컬 저장소를 컴파일하지 않고 컴파일 클래스 경로에만 추가하려는 경우 "시스템"범위 종속성을 사용하는 것을 고려할 수 있지만 빌드를 이식 할 수 없게 만들고 일반적으로 권장하지 않습니다.

+0

이미 mvn에서 사용하는 저장소가 c : \ Users \ \ .m2 \ repository \에 있습니다. 다른 저장소를 무시하거나 함께 살 수 있습니까? 개념 레벨에서 나는 무엇을 달성하기 위해 노력하고있다 commons 항아리에 대한 일반 mvn 저장소 및 mvn 일반 저장소에서 원하지 않는 특정 항아리에 대한 프로젝트 저장소를 사용하고 있습니다. –

+0

.m2 폴더 아래에있는 저장소가 로컬 저장소 캐시입니다. 삭제할 수 있으며 maven 프로젝트를 다시 실행하면 모든 이슈가 중앙 리포지토리와 자신의 리포지토리에서 다시 다운로드되어 .m2 폴더 아래에 저장됩니다. – Lan

+0

시스템 범위를 미묘하게 사용하면 다른 일이 깨지게됩니다. 각 jar 파일에 mvn install을 실행하는 "프로젝트 시작"스크립트를 사용하면 Maven이 예상대로 작동 할 수 있습니다. –

0

당신은 그 (단지 configure the maven-dependency-plugin 제대로) 할 수 있지만 그 제안하지 않을 것입니다.

방향에있어 몇 가지 단점이있을 수 있습니다 (예 : 사용중인 저장소에 Jar 파일을 저장할 수있는 경우가 많은 프로젝트의 경우, Jar 파일을 하드 드라이브의 전용 공간에 두는 것보다 그 중 하나는 각 프로젝트마다 등).

+0

제안을 오해하지 않는 한, 종속성을 내 프로젝트 폴더에 복사하려고하지 않습니다. mvn이 //${project.basedir}/lib를 응용 프로그램을 컴파일 할 때 종속성에 사용할 수있는 저장소 중 하나로 조사하기를 원합니다. –

+0

오 오케이! 그런 다음'mvn install : install'으로 제안 된 @Lan과 같이 로컬 저장소에 설치해야합니다. – rlegendi

관련 문제