프로젝트 B에 따라 프로젝트 A가 있습니다. 프로젝트 B를 git repo에서 다운로드했고, 프로젝트 B에 "mvn package"와 "mvn install"을 실행했습니다. 내 ~/.m2/repository 디렉토리에 있습니다.Maven에서 의존성으로 써드 파티 프로젝트 사용하기
"jar-with-dependencies"로 프로젝트 A를 패키징하려고 시도했지만 완벽하게 작동하지만 모든 종속성이있는 큰 항아리를 원하지 않습니다.
나는이 넣을 때 :
<dependency>
<groupId>ch.usi.da</groupId>
<artifactId>paxos</artifactId>
<version>trunk</version>
</dependency>
명령 "MVN 패키지"잘 작동하지만 난 그것을 실행하려고하면
java -cp target/basecast-1.0-SNAPSHOT.jar ar.uba.dc.basecast.App
을 내가 스레드에 예외를 얻었다 "기본"자바를 .lang.NoClassDefFoundError : ch/usi/da/paxos/Util 오류.
Eclipse를 사용하지 않고 maven에서만이 작업을 수행합니다. 나는 그것을 단순하게 유지하고 무대 뒤에서 어떤 일이 일어나고 있는지 배우고 싶다. 아마도 이클립스가 더 나은 방법으로 클래스 패스를 관리 할 것이지만 나는 그것없이 그것을하고 싶다.
업데이트 :이 제 3 자 프로젝트 B에는 많은 의존성이 있다는 것을 잊었습니다. 따라서 .jar 파일을 "lib"로 포함하는 것이 이상적인 해결책이 아닙니다. 모든 것이 로컬 저장소에 설치되기 때문에 maven dependencies resolution을 사용하고 싶습니다.
음 ... 당신은 jar-with-dependencies를 만들었고 모든 것이 작동하지만 당신은 의존성이있는 항아리가 없다고 말합니까? 그 자체로 모순처럼 들리는가? 당신은 당신이 무엇을 해결하려고하는지 더 자세하게 설명 할 수 있습니까? – khmarbaise
죄송합니다. 저는 영어가 모국어가 아닌 사람입니다. "jar-with-dependencies"옵션으로 컴파일 할 때 모든 항목이 포함 된 큰 항아리를 성공적으로 생성하고 완벽하게 작동합니다. 내가 말하고자했던 것은이 큰 항아리가 해결책이되기를 원하지 않는다는 것입니다. 사용자가 시스템에 설치된 모든 의존성 (예 : 로컬 repo 사용)을 갖고 maven이 마법을 수행하게하고 싶습니다. –
아니에요. 전혀 문제 없습니다. 흠 .. 당신은 사용자에게 jar-with-dependencies가 통계적으로 간단하다는 간단한 해결책을 제공하고 싶습니다. 사용자가 Maven을 설치/사용하도록 강요하면 실행 솔루션을 얻을 수 있습니다. 당신이 appassembler-maven-plugin 등을 통해 물건을 배달 할 수있는 더 간단한 해결책을 만들 수는 있지만 그 유스 케이스에 달려 있다고 생각합니다. – khmarbaise