2012-10-05 2 views
8

maven에서 관리하는 프로젝트를 명령 줄에서 실행하려고합니다.CLI에서 maven 생성 된 jar를 실행하는 방법

나는 ~/.m2/repository /에 다운로드되어 설치되는 pom.xml에 일련의 종속성을 가지고 있습니다. JAR 매니페스트에 classpath를 추가하기 위해 필요한 설정을 pom에 포함시켰다.

이제 문제는 jar 파일을 실행하려고 시도하는 것입니다. java -jar project-SNAPSHOT.jar.

Java는 다운로드 한 종속성을 찾을 수 없습니다. (매니페스트에 경로가 없으므로 가정합니다.)이 실행을 가장 효과적으로 수행하는 방법을 잘 모르겠습니다.

답변

5

옵션 1 :
생성 된 jar에는 종속 jar 파일이 없습니다. 더 쉬운 훨씬 더 나은 솔루션 AppAssembler 플러그인을 사용하는
입니다 : 그래서, 당신은 모든 종속 항아리가

java -cp /lcoation/of/dependency1.jar:/location/of/dependency2.jar:/location/of/dependency3.jar -jar project-SNAPSHOT.jar 

옵션 2 곳 자바를 클래스 경로를 알 필요가있다. 그것은 무엇을하는 일은

  1. 의존 항아리를 포함하는 디렉토리 구조에 항아리 패키지
  2. 생성 된 항아리는
  3. 쉘/창 스크립트 실행에

여기 좀 http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

에게 있습니다

옵션 3 :
짐을 모두 갖고 싶지 않고 그냥 갖고 싶다면 jar-with-dependency 여기를 참조하십시오. How can I create an executable JAR with dependencies using Maven?

여기에는 모든 종속 항아리가 포함됩니다.


편집 1 : 옵션 1의 경우Brad M 당신이 dependency plugin를 사용하여 모든 프로젝트의 deps의 목록을 얻을 수 있음을 언급했다. dependency:build-classpath

+0

아 답답 할 수 있습니다. – Nishant

+0

굉장 - 그게 내가 필요한 것. 이 모든 것을 포장하는 것에 대한주의 사항이 있습니까? 메모리 사용량 등? – Nick

+0

아무 것도 없습니다. 1. jar 만들기, 2. repo 폴더에서 부양하는 것, 3. java -jar ../myapp.jar Mainclass -cp ../repo/와 같은 쉘 스크립트를 작성하는 것. * .jar' – Nishant

4
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime 

여기서 더 많은 예제를 찾을 수 있습니다 : 3 ways to run Java main from Maven.

+0

maven 3.0.4와 함께 작동하지 않습니다. '[ERROR] 수명주기 단계를 알 수 없습니다. ".mainClass = my.Main"' –

관련 문제