2012-11-25 2 views
2

나는 기술자를 사용하여 메이븐에서 어셈블리를 짓고 있어요 나는 간단하게 할 노력하고있어 이름을 변경하지 않고 모든 프로젝트 종속성을 이름 바꾸기 다음주요 유물

  1. 어떤없이 주요 프로젝트 이슈 (JAR)을 포함 이름 바꾸기.
  2. 모든 프로젝트 종속성을 포함하고 이름을 바꿉니다.

이름 바꾸기 형식 :

${project.artifactId}-${project.version}.lib.${artifact.artifactId}.${artifact.extension}` 

현재 내 조립 기술자는 다음과 같습니다

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

    <id>default</id> 

    <formats> 
     <format>tar.gz</format> 
     <format>zip</format> 
    </formats> 

    <dependencySets> 
     <dependencySet> 
      <useProjectArtifact>true</useProjectArtifact> 
      <outputDirectory>/</outputDirectory> 
      <excludes> 
       <exclude>*:*</exclude> 
      </excludes> 
     </dependencySet> 
     <dependencySet> 
      <useProjectArtifact>false</useProjectArtifact> 
      <outputDirectory>/</outputDirectory> 
      <outputFileNameMapping> 
       ${project.artifactId}-${project.version}.lib.${artifact.artifactId}.${artifact.extension} 
      </outputFileNameMapping> 
      <unpack>false</unpack> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

를 불행하게도, 내가 배포판에 착륙하는 주요 프로젝트 이슈를 얻이 수없는 것 . 내가 도대체 ​​뭘 잘못하고있는 겁니까?

<!-- Include the project artifact itself. --> 
<files> 
    <file> 
     <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source> 
     <outputDirectory>/</outputDirectory> 
    </file> 
</files> 

<!-- Include all dependent libraries. --> 
<dependencySets> 
    <dependencySet> 
     <useProjectArtifact>false</useProjectArtifact> 
     <outputDirectory>/</outputDirectory> 
     <outputFileNameMapping>${project.artifactId}-${project.version}.lib.${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> 
     <unpack>false</unpack> 
    </dependencySet> 
</dependencySets> 

합니다 (<source>를 들어 위의 것보다 더 정확한 표현이있을 수 있지만, 사용할 수 메이븐 속성의 전체 목록을 찾는 :

+1

''패턴과 관련이 있습니다. 그것을 제거하고 프로젝트 아티펙트가 예상되는 곳에서 끝나는 지 확인하십시오. 그렇다면 어떻게 든 패턴을 수정해야합니다 (대신 ''을 사용하십시오). –

+0

'-X'로 mvn을 실행하면 어셈블리 플러그인 디버그 출력이 각 dependencySet과 일치하는지 알려야한다는 것을 기억합니다. Andrew와 동의합니다.'excludes '대신'includes'를 사용하여 도움이되는지 확인해 보겠습니다. – user944849

답변

2

당신은 프로젝트 별도로 유물 자체를 포함하도록 <files> 블록을 사용할 수 있습니다 누구든지 알고 있다면 편집 해주십시오!)

마지막으로, 귀하의 종속물에 분류기가있는 경우 을 귀하의 <outputFileNameMapping>에 추가하는 것이 좋습니다. 그렇지 않으면 분류기가 누락 될 수 있습니다. 파일 이름에서.

+0

그것은 최선의 해결책은 아니지만 실제로는 효과가 있습니다. –