2014-12-19 3 views
1

내 Maven 패키지가 두 가지 컨텍스트로 실행되도록 허용 할 수 있어야합니다.Maven Jar에는 두 개의 실행 컨텍스트가 필요합니다.

  1. 사용자는 모든 이적을 다운로드하는 사용자가 필요가 myjar

  2. 을 myjar.jar -jar 자바를 실행할 때 표시되는 AWT 대화 상자에서 라이센스 키를 생성하는 명령 줄에서 항아리를 실행해야 클라이언트 프로젝트가 myjar를 의존성으로 참조 할 때 의존성 ("일반적인"방법으로).

시나리오 1에서는 AWT 대화 상자가 튀어 나오도록 AWT 양식 jar을 패키지화해야합니다.
시나리오 2에서는 클라이언트 프로젝트 빌드시 다른 모든 종속성을 다운로드해야합니다.

가능한 한 작게 유지하려면 어떻게 포장해야합니까?

jar-plugin, shade-plugin 및 assembly-plugin을 별 도움없이 사용해 보았습니다.

JAR-PLUGIN :
lib 디렉토리/디렉토리에 양식-1.2.1.jar를 배치하고 myjar.jar이 명령 줄
에로드되지 않습니다 자바 -jar 때문에 클래스 패스에 추가하는 것은 작동하지 않습니다

SHADE-PLUGIN :
인터넷을 다운로드하십시오. 일부 종속성을 제외하는 방법은 무엇입니까?

조립품 :
인터넷을 다운로드하십시오. 일부 종속성을 제외하는 방법은 무엇입니까?

(시나리오 1의 경우) forms-1.2.1.jar의 전이 종속성을 패키지화하는 방법은 있지만 패키징 시간에는 다른 모든 종속성을 제외하므로 클라이언트 프로젝트 빌드 타임 (시나리오 2의 경우)에서 다운로드됩니다.

jar-plugin 또는 assembly-plugin을 사용하여이 작업을 수행 할 수 있습니까? 모든 종속성을 포함하는 jar 파일을 생성하고 명령 줄에서 호출하는 것을 가능하게하지만 제대로 작동 얻을 것이다

about the following:

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <!-- NOTE: We don't need a groupId specification because the group is 
      org.apache.maven.plugins ...which is assumed by default. 
     --> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.5.2</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     [...] 
</project> 
당신이 보충 부분을 필요가 있다고 생각 무엇

+1

2 개의 사용 사례가 없습니다. 당신은 항아리가 자신의 의존성을 다운로드 싶어? 내부에 Maven 내장 :) – talex

+0

유스 케이스 2는 POM 파일로 이슈가 적절하게 배포되었다고 가정하면 Maven에서 자동으로 처리합니다. 사용자가 이슈를 종속물로 참조하면 Maven은 제공된 POM을 사용하여 해결할 종속성을 결정합니다. "jar-with-dependencies"는 누군가가 Maven POM에서 참조 할 때 얻을 수있는 아티팩트가 아닙니다. 그들은 정상적인 것을 얻을 것이고, 어떤 의존성도 그들의 지역 repo를 사용하여 해결 될 것입니다. "one-jar"메소드는 Maven이 아닌 방식으로 배포하기 쉽도록 순수하게 사용됩니다. –

+0

@ ryan-j 나는 maven을 통해 maven을 배포하려고한다. 따라서 원 - 항아리가 잘못된 접근법임을 분명히 해 주셔서 감사합니다. 위의 수정 내용을 참조하십시오. –

답변

0

:

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.5.2</version> 
     <configuration> 
      [...] 
      <archive> 
      <manifest> 
       <mainClass>org.sample.App</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     [...] 
     </plugin> 
     [...] 
</project> 
+0

감사합니다 @ khmarbaise. 나는 또한이 접근 방법을 일찍 시도했다. maven이 클라이언트 프로젝트 패키징 시간에 다운로드 할 수 있도록 myjar 패키징시 다른 모든 의존성을 작동 및 제외시키는 시나리오 -1 1.2.1 만 포함시키는 방법이 있습니까? –

+0

종속성과 관련하여 특별한 요구 사항이있는 경우 적절한 종속성을 포함하는 별도의 모듈을 만들고 나머지는 maven-assembly-plugin을 수행하는 것이 가장 좋습니다. – khmarbaise

+0

이 시나리오에서 멀티 메이븐 프로젝트를지지하십니까? 그렇다면 두 모듈 모두 Maven Central에 게시해야한다는 의미입니까? –

관련 문제