소스 및 JavaDoc으로 SNAPSHOT을 배포하는 방법은 무엇입니까?


92

내 스냅 샷과 함께 소스와 자바 문서를 배포하고 싶습니다. 즉, 다음 명령을 자동화하려고합니다.

mvn clean source:jar javadoc:jar deploy

실행하기 :

mvn clean deploy

install단계 (예 : 로컬 빌드) 중에 javadoc / sources 생성을 실행하고 싶지 않습니다 .

소스 / javadoc 플러그인이 플러그인 실행과 동기화 될 수 있다는 것을 알고 release있지만이를 스냅 샷 릴리스에 연결하는 방법을 알 수 없습니다.

답변:


76
<build>
  <plugins> 
    <plugin>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <id>attach-sources</id>
          <phase>deploy</phase>
          <goals><goal>jar-no-fork</goal></goals> 
        </execution>
      </executions>
    </plugin>
    <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>attach-javadocs</id>
          <phase>deploy</phase>
          <goals><goal>jar</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
    <plugin> 
      <!-- explicitly define maven-deploy-plugin after other to force exec order -->
      <artifactId>maven-deploy-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>deploy</id>
          <phase>deploy</phase>
          <goals><goal>deploy</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
  </plugins> 
</build>

전체 예제는 Sonatype의 OSS 상위 POM 을 참조하십시오 .


1
이 설정을 사용하고 있으며 꽤 잘 작동합니다. 그러나 두 가지 작은 문제가있었습니다. 하나는 생성 된 소스가 "jar"목표에 포함되지 않고 "jar-no-fork"가 필요합니다. 두, (저장소 관리자의 문제로 이어질 것입니다 때문에 두 번 deploeyed,)를 두 번 릴리스 소스를 생성하게됩니다 릴리스 플러그인의 버그가
— mglauche

1
maven-source-plugin:jarpackage기본적으로 단계에 연결 되므로 중단 <phase>verify</phase>하고 동일한 작업을 수행 할 수 있습니다. 게다가 그 단계는 "프로젝트를 패키징하고 통합 테스트를 실행"하기위한 것이므로 어쨌든 확인하기 위해 이것을 첨부해야하는 이유를 잘 모르겠습니다.
— matt b

@mglauche @matt 귀하의 의견에 감사드립니다. 방금 적절하게 변경했습니다.
— sfussenegger 2011 년

1
@Henryk 좋아, 나는 maven-deploy-plugin뿐만 아니라 maven이 POM에 정의 된 플러그인에서 실행을 보장하기 위해 명시 적으로 추가했습니다 (또는 시도). 그러나 약간의 실험이 필요할 수 있습니다.
— sfussenegger 2011 년

1
임의의 ID를 사용하여 당신이 기본 "다시 매핑"을 하나 개의 실행 싶은 생각 새로운 실행 생성
— Hurda

48

플러그인 구성을 할 필요가없는 대안을 추가하려면 :

mvn -DperformRelease=true [goals]

크레딧은 http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998 에서 mcbeelen으로 이동합니다 .


4
이 기능은 Maven의 향후 릴리스 (아마도 Maven-4?)에서 사라질 수 있음을 언급하고 싶습니다. Maven Super POM의 프로필 섹션에서 주석을 확인하십시오. maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html
— Dan

45

Dan이 언급 한 기사는 poms를 수정하지 않고 작동하며 곧 사라지지 않을 또 다른 접근 방식을 언급합니다.

mvn clean javadoc : jar 소스 : jar 설치

Maven 3+와 함께 잘 작동합니다.

mvn clean javadoc : jar 소스 : jar 배포

Jenkins에서 Nexus에 배포하는 것을 테스트했습니다.

이 접근 방식은 Jenkins 작업을 일부 수정하기 만하면되었고 내 poms를 망칠 필요가 없었기 때문에 좋았습니다.


5
pom-free 솔루션에 감사드립니다! 그 참고 자바 독을 : 병 및 / 또는 소스 : 항아리 앞에 나타나야합니다 설치 또는 배포 하거나 별도의 항아리는 배포에 "연결"되지 않습니다.
— seanf

2
FWIW 이러한 옵션은 다음과 함께 작동합니다 package.mvn clean javadoc:jar source:jar package
— ecoe

소스와 javadoc을 빌드하고 저장소에 업로드하는 정확한 명령을 알려주기 때문에 이것은 좋은 대답입니다.
— russellhoff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.