2014-07-22 4 views
5

Maven central을 통해 사용할 수있는 라이브러리가 아닌 응용 프로그램이 있다고 가정합니다. 예를 들어, 그러한 프로젝트 중 하나는 jol이고 해당 CLI 인터페이스는 in Maven central입니다.Maven 저장소에서 직접 JAR 파일 실행

내가 알 수있는 한 라이브러리와의 주요 차이점은 해당하는 JAR 파일에 적절한 main() 메서드가있는 클래스가 포함되어 있고, 선택적으로 관련 Main-Class: 헤더가 JAR 매니페스트에 포함되어 있다는 점입니다. 그러한 artifact가 프로젝트에 대한 의존성으로 사용된다면, Maven은 다른 artifact와 마찬가지로 JAR 파일을 의존성과 함께 로컬 저장소에 행복하게 다운로드 할 것입니다.

Maven 프로젝트를 설정하지 않고 Maven을 사용하여 이러한 응용 프로그램을 직접 실행할 수 있습니까?

exec:java plugin은 종속성을 사용할 수 있도록 JVM 클래스 경로를 설정하여 로컬 프로젝트에 적합합니다. 사용자는 JAR 또는 .class 파일 위치 등에 대해 걱정할 필요가 없습니다. 불행히도, 내가 알 수 있듯이, 그것은 또한 Maven 프로젝트를 포함해야하므로 임의의 명령 행 프롬프트에서는 사용할 수 없습니다.

+1

나는 아마 http://stackoverflow.com/questions/1776496/a-simple-command-line-to-download-a-remote-maven2-artifact-to-the-local- 다운로드 한 이슈를 실행하는 쉘 스크립트로 reposito. 또는 Maven repo에 대한 간단한 프로그램을 작성하고 이슈를 가져 와서 Maven을 모두 건너 뛸 수 있습니다. –

+0

@DaveNewton : JAR 파일을 가져 오는 것이 유일한 문제는 아닙니다. 예를 들어,'exec : java'는 JVM classpath를 설정하여 종속성을 사용할 수있게합니다. * 그 다음은 내가 무엇을했는지 ... – thkala

+1

jar의 의존성을 프로그래밍 방식으로 얻을 수 있고 똑같은 일을 할 수 있습니다. 어쨌든 Maven이 설치되어 있다면 최상위 의존성을 가진 ad-hoc 프로젝트를 생성하는 것이 매우 작은 POM 파일입니다. 직접 프로젝트를 만들 수없는 이유는 무엇입니까? 그게 무슨 문제 야? –

답변

3

아니요, Maven은 사용자가 요구하는 것을 수행하지 않습니다. 프로젝트를 설명하는 pom.xml 파일을 기반으로 Java 프로젝트를 빌드하기위한 빌드 도구입니다.

따라서 pom.xml 파일없이 maven 빌드를 실행할 수 없습니다. pom.xml을 가지고 있다면 정의에 따라 'Maven 프로젝트를 설정했습니다'.

@DaveNewton이 말했듯이, 문제의 jar 파일과 exec-maven 플러그인에 대한 종속성을 가진 아주 작은 pom.xml을 설정할 수 있어야합니다. 나는 그것보다 더 간단하게 될 것 같지 않다.

관련 문제