소스 및 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.