2013-10-21 2 views
0

다중 모듈 Maven 프로젝트에서 carhorse의 두 모듈이 있다고 가정합니다. 둘 다 JAR 파일 인 transport.jar에 의존합니다.이 파일은 모든 온라인 Maven 저장소에서 사용할 수 없습니다. 따라서 이러한 모듈을 프로젝트 폴더 구조의 어딘가에있는 파일에 의존하는 방법을 찾아야합니다.JAR에 종속 된 다중 Maven 모듈

내가 아는 바로는 기본 Maven 솔루션은 JAR 파일을 로컬 저장소에 수동으로 등록하는 것입니다. 이것은 개발 용 컴퓨터에서 작동하지만 빌드 서버를 분해하여 각 빌드 전에 로컬 저장소를 지 웁니다.

나는 이것을 잠시 동안 켜고 끄는 방법을 온라인에서 검색해 봤지만 도움이되는 것들을 발견했지만 완전히 작동하는 것은 아무것도 없었다.

예를 들어 일반적인 대답은 <scope>system</scope>을 사용하여 파일에 종속성을 추가하는 것입니다. 그러나 다른 사람들은 그렇게하는 것이 극히 나쁜 습관이라고 주장 할뿐만 아니라 빌드 서버에서도 작동하지 않습니다. (참고로, JAR에 대한 절대 경로를 사용하는 것은 몇 가지 다른 기계에 구축되어 있기 때문에 문제가되지 않는다는 점을 지적하고자한다.)

더 유용한 방법을 찾았습니다. 경로 file:${project.basedir}/lib을 가리키는 POM 파일에 로컬 저장소를 정의하는 것이 었습니다. (Such as in this article) 불행히도 car POM에 JAR 및 저장소 정의를 배치하면 JAR에 대한 종속성을 horse에 성공적으로 추가 할 수 없습니다. 두 번째 저장소를 horse에 지정하고 file:${project.basedir}/../car/lib을 가리키는 것과 마찬가지로 car에 대한 추가 참조를 사용하거나 사용하지 않으려 고 시도했습니다. 세 번째 모듈 인 transport-lib을 JAR 종속성을 래핑하기 위해 만들려고하면이 문제가 남아 있습니다.

JAR 파일을 두 모듈에 모두 추가하고 두 개의 모듈 로컬 리포지토리를 정의 할 수는 있지만 실제로 두 가지 (자주 업데이트되는) JAR 파일을 다음과 같이 유지해야하는 경우가 아니면 필요하지 않습니다. 동기화 등

그럼, 내 질문은 다음과 같습니다 : 두 모듈이 프로젝트 내에서 같은 JAR 파일에 의존하는 작업 확인 작업 방법을 줄 수 있습니까?

답변

2

가장 좋은 해결책은 repository manager like Archiva, Artifactory or Nexus을 사용하고 해당 아티팩트를 저장소 관리자에 설치하는 것입니다. 이후에이 이슈를 아무런 문제없이 직접 pom 파일에서 사용할 수 있습니다. 그것이 등 기타의 릴리스 이후에 다른 문제가 발생할 것입니다 원인

+0

난 정말이 일을 메이븐 전용 방법을 찾고 싶었지만, 결국, I가 있었다 범위 시스템을 사용하지 마십시오 Artifactory 경로 가져 가라. 그들 모두를 이길 수는 없다고 생각합니다. – Smallhacker