2013-03-20 6 views
1

우리는 개발을 위해 Mavenm2e 도구를 사용하고 있으며 문제가 발생했습니다.Maven 및 m2e - 의존성 정보가있는 jar 빌드

우리 프로젝트 중 하나는 다른 프로젝트에 필요한 작은 라이브러리이므로 jar 파일에 패키징하고 우리의 전용 Maven 저장소에 저장합니다.

당분간이 저장소에 저장 한 모든 jar에는 외부 종속성이 없지만 언급 한이 라이브러리는 외부 jar를 사용합니다.

이제이 항아리에 대한 정보를 다른 항아리에 추가하면이 항아리는 우리의 개인 저장소에서 다운로드되지만 Maven은이 항아리에 필요한 종속성을 다운로드하지 않습니다.

이 인공물에 필요한 종속성에 대한 정보를 포함하도록 Maven에 알려주는 pom.xml 파일에 특정 대상/추가 내용을 사용해야하는지 궁금합니다. 편집

:

1.I가 m2e

2. mvn install:install-file -DgroupId=<your_group_name> -DartifactId=<your_artifact_name> -Dversion=<snapshot> -Dfile=<path_to_your_jar_file> -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

3.I를 사용 Eclipse에서 jar 파일을 생성 : 여기 나는 우리의 개인 저장소에 항아리를 업로드 할 때 수행하는 워크 플로우입니다 내 로컬 저장소에서 만든 폴더를 원격 저장소에 복사하십시오.

+0

다른 프로젝트에서도 Maven을 사용합니까? – Lucas

+0

올바른 방법은 jar 파일을 수동으로 설치하는 대신 고전적인'mvn deploy'를 사용하여 라이브러리를 빌드하는 것입니다. 생성 된 pom ('-DgeneratePom = true'를보십시오)은 최소값이 될 것이고 종속 정보를 포함하지 않을 것입니다. –

답변

3

상태에 따라 작은 라이브러리가 maven 프로젝트 인 경우 이클립스에서 jar를 빌드 한 다음 maven을 사용하여 설치 한 다음 수동으로 원격 저장소에 복사 할 이유가 없어야합니다.

mvn deploy 

단지가 구축되도록 (듯이) 다음 원격 REPO에 배포 한 후 해당 지역 받는다는의 repo에 직접 설치하는 것 대신 당신은 배포 목표를 실행하는 데 m2e를 사용해야합니다.

은 일식 이것은 바로 그때 Run을 클릭 Goals 입력 타입 deploy에 대한 실행 구성 창에서 다음 Run As -> Maven Build...을 선택, 프로젝트를 클릭하여 수행 할 수 있습니다. 이 작업이 한번 완료되면 Run As -> Maven Build을 사용하여 동일한 구성을 다시 실행할 수 있습니다.

+0

원격 저장소에 배포하기 위해 내 대상을 변경 한 후에는 종속성이 다운로드되지만 m2e에는 작은 문제가 있습니다. 이클립스에서'Maven Dependencies'를 확장하면 (라이브러리의 종속성으로 추가해야하는 것을 포함하여) 몇 가지 병을 볼 수 있지만 라이브러리 자체가 디렉토리로 표시됩니다. 무엇이이 문제를 일으킬 수 있는지 알고 계십니까? – Andna

+1

@Andna, 버전이 현재 버전 인 동일한 Eclipse 작업 공간의 프로젝트에 종속하는 경우 종속성이 폴더로 표시됩니다. 예를 들어 작업 공간에'DependencyA'가 있고 버전이 1.1.0-SNAPSHOT이고 동일한 작업 공간에있는 프로젝트 'ProjectA'가 버전 1.1.0-SNAPSHOT에 의존하면 폴더를 보여줍니다, 대신에,'DependencyA'의 버전'1.0.0'에 의존하게되면, 그것은 단지로 보여 질 것입니다. – Lucas

+0

고마워, 나는이 기능에 대해 잘 알지 못했다. – Andna

3

jar 파일을 설치하는 동안 -DgeneratePom=true을 사용합니다. 당신이해야 할 일은 이슈에 대해 pom.xml을 생성하는 것입니다. pom.xml에서 jar 파일에 필요한 종속성을 지정할 수 있습니다. install:install 플러그인 목표를 실행할 때 대신 -DpomFile=pom.xml을 사용합니다.

+1

왜'mvn deploy'를 실행하지 않는가?그는 도서관이 자체적으로 maven 프로젝트라고 언급했다 ... – Lucas

+0

@ 루카스, 좋은 지적. 나는 도서관 자체가 maven 프로젝트라는 것을주의하지 않았다. 나는 install : install plugin이 수동으로 사용되었고 ithe jar 파일이 non-maven 프로젝트에 의해 제공된다고 생각했다. – Lan

2

이 작업을 수행하는 가장 좋은 방법은 당신이

은 자세한 내용

을위한 this를 참조하여 Settings.XML의에서 설정에 개인 유물 관리자 (넥서스 또는 artifactory)에 분포 저장소가 mvn deploy

를 실행하는 것입니다

관련 문제