2012-07-30 3 views
0

나는 (패키지 단계에서 maven-assembly-plugin을 통해) 어셈블리를 사용하여 각 모듈을 특정 방식으로 패키징하는 다중 모듈 maven 2 프로젝트를 보유하고 있습니다. 그런 다음 다른 모듈을 사용하여 이러한 어셈블리를 배포 가능한 "설치 관리자"패키지로 결합하려고합니다. 설치 프로그램 모듈의 경우 다른 프로젝트의 기본 jar 파일을 볼 수 있지만 추가 어셈블리에 대한 액세스 권한을 부여하지는 않습니다. 설명서에서 이것이 가능한 것이 틀림 없으므로 내가 틀린 일을하거나 Maven의 버그라고 가정합니다. 나는 몇 일 동안 이것으로 지금 붙어 있었고 그래서 어떤 도움을 주시면 감사하겠습니다!어셈블리의 Maven 어셈블리

다음은 github에서 테스트 프로젝트를 작성하여 proj1 모듈이 2 개의 jar 파일을 작성한다는 설명입니다. 나는 "패키지"모듈에서 생성 된 어셈블리가 둘 다 포함되도록 기대할 것이지만 기본 프로젝트 병을 포함하지는 않습니다.

https://github.com/unluckypixie/maven-packaging-test

참고 : 나는 참고 Proj1 하나의 항아리의 내용을 알고이 예에서 동일 - 나는으로 Proj1 파일이 무엇인지 생각하지 않지만, 내 실제 상황에없는 문제와 관련이 있습니다. 당신이 볼 수

mvn clean package 

을 그리고 ls proj1/target/*.jar를 수행합니다 :

jar -tvf package/target/package-1.0-SNAPSHOT-package-assembly.jar 

당신은 같은 것을 볼 것입니다 : 패키지 항아리를 보면

proj1/target/proj1-1.0-SNAPSHOT.jar 
proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar 

당신이 실행하는 경우 :

 0 Mon Jul 30 16:27:00 BST 2012 META-INF/ 
    106 Mon Jul 30 16:26:58 BST 2012 META-INF/MANIFEST.MF 
    0 Mon Jul 30 16:21:46 BST 2012 package/ 
    2358 Mon Jul 30 16:21:44 BST 2012 package/proj1-1.0-SNAPSHOT.jar 
    2363 Mon Jul 30 16:21:46 BST 2012 package/package-1.0-SNAPSHOT.jar 

나는 proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar이 왜 거기에 없는지에 대해 알고 싶습니다. (여기에 몇 가지 수정을 만든)

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 

    <id>package-assembly</id> 

    <formats> 
     <format>jar</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <moduleSets> 
     <moduleSet> 
      <useAllReactorProjects>true</useAllReactorProjects> 

      <includes> 
       <include>org.test.parent:*</include> 
      </includes> 

      <binaries> 
       <outputDirectory>/package/</outputDirectory> 
       <unpack>false</unpack> 
      </binaries> 
     </moduleSet> 
    </moduleSets> 
</assembly> 

답변

0

난 내 어셈블리 파일에 attachmentClassifier를 사용하여이 작업을 얻기 위해 관리해야 예컨대 :

<moduleSet> 
     <useAllReactorProjects>true</useAllReactorProjects> 

     <includes> 
      <include>org.me:*</include> 
     </includes> 

     <binaries> 
      <outputDirectory>/output/dir</outputDirectory> 
      <unpack>false</unpack> 
      <includeDependencies>false</includeDependencies> 
      <attachmentClassifier>my-assembly</attachmentClassifier> 
     </binaries> 
    </moduleSet> 

감사합니다 당신의 도움을 khmarbaise에, 나는 당신의 솔루션을 사용하지 않았을 수도 있지만 그것은 나를 거기에 도착 도움이!

0

난 당신의 게시물에 example project based을 만들었으며 나는

mvn clean package 

을 할 경우 내가/패키지에서 찾을 :

은 포장 조립은 다음과 같습니다 target/package-1.0.0-SNAPSHOT-package-assembly.zip contains

package/ 
package/proje1-1.0.0-SNAPSHOT.jar 
package/package-1.0.0-SNAPSHOT.jar 

나를. 질문은 당신이 무엇을 기대 했는가?

+0

proj1 대상 폴더를 보면 두 개의 출력 항아리가 있습니다. 하나는 가지고 있고 다른 하나는 접미어로 어셈블리 이름이 있습니다. "proje1-1.0.0-SNAPSHOT-proj1-assembly.jar"하나가 내가 한 것입니다. 그래서 출력 파일에는 3 개의 jar 파일이 있어야하고, proj1 *과 package *라는 두 파일이 있어야합니다. –

+0

당신의 예제에 따라 git hub에서 테스트 프로젝트를 만들었습니다 ... 전에 stackoverflow에 게시하지 않았으므로 그렇게 생각하지 않았습니다. –

+0

문제를 해결하기 위해 끌어 오기 요청이 추가되었습니다. – khmarbaise

관련 문제