2011-07-01 2 views
0

을 시도하지 무엇을 :는 압축되지 의존성을 얻을 수 없습니다 항아리 전에 실행 : 항아리, 아무리 내가하려고 아무리

내가 얻을 수 받는다는 - 종속성 - 플러그인/전에 실행 의존성 포장을 받는다는 항아리 - 플러그인/jar 명령 행에서 mvn clean install을 실행할 때.

언젠가는 압축 파일을 실행하기 전에 jar 파일을 실행하는 것을 보았습니다. 필자는 검색주기에 미리 패키지 단계를 추가하여 Maven 라이프 사이클에 미리 추가하는 방법을 보았습니다.

기본적으로 필요한 모든 클래스 (모두 2600 개)를 포함하는 단일 jar 파일을 만들고 싶습니다. 이 항아리는 그것을 가능하게하는 매니페스트의 방식으로 실행되도록 가져옵니다 ... 내가 그것을 작동시킬 수 있다면 ...

java -jar blah.jar 

을 그리고 여기에 XML 조각이야

 <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.2</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
       </execution> 
      </executions> 
      </plugin> 
    <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>archivedb.Read</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
      </plugin> 

나는 아기처럼 여기저기서 우는 것이 위험 할 정도로 가까웠다 ....하지만 이봐! 그건 메이븐이야!

대답은 : 나는 8 시간 동안 내 자신의 질문에 대답 할 수 없으므로

, 여기에 해결책은 ..

메이븐은 지난 8개월에에 이동 한 것으로 보인다는, 지금에 보인다 '뚱뚱한'항아리를 만드는 것이 명시된 플러그인이 있어야합니다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     <configuration> 
      <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
       <mainClass>archivedb.Read</mainClass> 
      </transformer> 
      </transformers> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

모든 답장을 주셔서 감사합니다하지만 난 내 자신의 게시물을 대답했습니다. 후속 답장은 문제를 혼란스럽게합니다. 주목 해 주셔서 감사합니다. –

답변

0

당신은을 식별하여 실행할 수 있습니다 :

http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html

지금 다음에 내 구성을 변경했는데 아주 잘 작동, 감사 : 설명서는 다음 URL에서입니다 나는 이것이 당신이 요구 사항을 달성하는 데 도움이 될 수 있습니다 희망

"mvn clean dependency:unpack jar:jar install" 

으로 목표 순차적으로

감사합니다.

Charlee Ch.

+0

고마워, 나는 한 가지 해결책이었던 것을 얻으려고했다. 나는 내 대답을 게시했다. (글쎄, 내 질문을 편집했다. 나는 내 질문에 대답 할 수 없다.) –

+0

나는 왜 그 이유를 알고 싶다. 그 실행 물건이 올바른 순서로 실행되지 않았습니다. –

+0

@ Bryan Hunt, 전에 proguard 플러그인과 비슷한 문제에 직면했습니다. 필자는 "준비 패키지"단계 구성을 사용하여 성취합니다. http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html에서 자세한 정보를 볼 수 있습니다. 준비 패키지는 실제 포장 전에 패키지를 준비하는 데 필요한 모든 작업을 수행합니다. 이로 인해 패키지의 처리되지 않은 버전이 나옵니다. (Maven 2.1 이상) –

1

단일 병 작성과 비슷한 문제가있었습니다. 내 솔루션은 동안 모든 종속성을 과정을 컴파일 및 사용자 정의로 이동 압축을 풉니 다 압축 풀기 목표 (표준 받는다는 의존성 플러그인을 통합 outputDirectory. 비밀은 는, JAR 플러그인은 대상/클래스에서 모두 같은 디렉토리와 팩을한다 ..

<build> 
<plugins> 
    <plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <finalName>${project.artifactId}</finalName> 
     <archive> 
     <manifest> 
      <mainClass>pl.company.client.Uploader</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
    <version>2.3.1</version> 
    </plugin> 

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.4</source> 
     <target>1.4</target> 
    </configuration> 
    <version>2.3.2</version> 
    </plugin> 

    <plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>unpack-dependencies</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>unpack-dependencies</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.directory}/classes</outputDirectory> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    </resource> 
</resources> 

: 하나의 JAR

나는 사용자에게 outputDirectory을 정의 왜 아래 코드에서보세요

+0

Mariusz 님,이 문제는 잠시 후에 해결되었지만 내 자신의 질문에 대답하는 것은 허용되지 않았습니다. 내 게시물의 두 번째 부분을 읽으십시오. 요즘에는 매우 신뢰할만한 솔루션이 있습니다. –

5

원래 질문에서 다음 단계로 바꾸십시오.

<phase>prepare-package</phase>

이것은 단지 처음 추출되게된다. 문제를 해결하려면 음영 솔루션이 더 좋지만, 음영이 도움이되지 않는 비슷한 문제가있는 다른 사용자를위한 참고 자료로 게시 할 것입니다.

출력 경로는 jar : jar goal 패키지 (대상/클래스)에서 jar의 내용이 끝나도록 설정됩니다.

전체 플러그인 실행 XML 조각 :

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <includes>**/*.class</includes> 
         <excludes>**/*.properties</excludes> 
         <outputDirectory>${project.build.outputDirectory}</outputDirectory> 

        </configuration> 
       </execution> 
      </executions> 
     </plugin>