문제

우리는 허드슨과 Maven reelease-plugin 릴리스 빌드를 수행합니다. 이제 나는 포함 된 프로젝트가 있습니다 집회 필요한 모든 구성 요소를 구성한 다음 원하는 디렉토리 구조가 포함 된 .tar.gz 패키지로 패키지합니다.

이제 릴리스-플러그 인이 릴리스 중에이 패키지를 Maven 저장소에 배포하도록하려고 노력하고 있습니다. 목표 : 표준 재료 (소스, Javadoc, POM) 만 배포합니다.

나는 이미 조립 목표를 Maven 패키지 단계에 묶었 고, .tar.gz는 릴리스 중에 빌드를 얻지 만 리포지토리에 업로드되지는 않습니다. 내가 여기서 잘못하고있는 일이 있습니까?

어셈블리 플루그인 구성은 다음과 같습니다.

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-4</version>
    <configuration>
      <descriptors>
        <descriptor>src/main/assembly/distribution.xml</descriptor>
      </descriptors>
      <finalName>${pom.artifactId}-${pom.version}</finalName>
      <appendAssemblyId>false</appendAssemblyId>
      <tarLongFileMode>warn</tarLongFileMode>
    </configuration>
    <executions>
        <execution>
            <id>dist-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>assembly</goal>
            </goals>
        </execution>
    </executions>
</plugin>

내가 릴리스를 구축하기 위해 실행하는 명령은 다음과 같습니다

mvn release:prepare release:perform release:clean
도움이 되었습니까?

해결책

한편, 나는 내가 원하는 것을하는 두 가지 방법을 찾았다.

Maven-Build-Helper-Plugin은 배포해야 할 유물 목록에 추가 항목을 추가 할 수 있습니다.

    <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
         <version>1.3</version>
         <executions>
           <execution>
             <id>attach-distribution</id>
             <phase>package</phase>
             <goals>
               <goal>attach-artifact</goal>
             </goals>
             <configuration>
               <artifacts>
                 <artifact>
                   <file>target/${pom.artifactId}-${pom.version}.tar.gz</file>
                   <type>tar.gz</type>
                 </artifact>
               </artifacts>
             </configuration>
           </execution>
         </executions>
       </plugin>

다른 하나는 간단하고 Maven-User Mailinglist의 누군가가 이것을 지적했습니다. 간단한 조립 : 어셈블리 대신 단일 목표 : 어셈블리. 이런 식으로 생성 된 아티팩트는 배포 단계에서 리포지토리에 업로드됩니다.

    <execution>
        <id>dist-assembly</id>
        <phase>package</phase>
        <goals>
            <goal>single</goal> <!-- that's all :) -->
        </goals>
    </execution>

다른 팁

파일 배포는 릴리스 플러그인의 일부가 아니라 배포 플러그인의 일부입니다 (릴리스 릴리스 자체는 자체적으로 물건을 배포하지 않지만 릴리스 중에 호출 할 배포 플러그인을 구성 할 수 있습니다).

일반적으로 배포 플러그인은 모든 아티팩트를 원격 저장소에 배포하지만 어셈블리는 아티팩트가 아닙니다. Maven은 저장소에서 .tar.gz 아카이브를 사용할 수 없으므로 처음에 배치하는 것은 의미가 없습니다.

쓸모없는 파일을 저장소에 복사 해야하는 경우 사용해야합니다. deploy:deploy-file (문서를 참조하십시오) 파일을 수동으로 배포하고 릴리스 단계에서 플러그인을 실행하여 플러그인을 구성합니다. 그러나 나는 여전히 그것에 대해 조언합니다.

아마도 당신이 찾고있는 것은 어딘가에 조립품을 자동으로 업로드하는 방법입니다. 나는 이것을하는 플러그인을 모른다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top