2011-01-18 21 views
74

Tôi muốn triển khai nguồn và javadocs bằng ảnh chụp nhanh của mình. Điều này có nghĩa rằng tôi muốn Automize lệnh sau:Làm thế nào để triển khai SNAPSHOT với các nguồn và JavaDoc?

mvn clean source:jar javadoc:jar deploy 

Chỉ cần thực hiện:

mvn clean deploy 

Tôi không muốn có hệ javadoc/nguồn thực hiện trong giai đoạn install (tức là địa phương xây dựng) .

Tôi biết rằng plugin nguồn/javadoc có thể được đồng bộ hóa với việc thực thi plugin release nhưng tôi không thể tìm ra cách nối dây vào các bản phát hành ảnh chụp nhanh.

Trả lời

69
<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> 

Xem Sonatype's OSS parent POM để có ví dụ hoàn chỉnh.

+0

Tôi đang sử dụng thiết lập này và nó hoạt động khá tốt. Tuy nhiên tôi đã có hai vấn đề nhỏ: một, nguồn được tạo ra không được bao gồm trong mục tiêu "jar", bạn sẽ cần "jar-no-fork". Hai, có một lỗi trong plugin phát hành sẽ gây ra các nguồn phát hành hai lần (và do đó deploeyed hai lần, sẽ dẫn đến các vấn đề với người quản lý kho lưu trữ) – mglauche

+1

'maven-source-plugin: jar' gắn vào' gói' theo mặc định, vì vậy bạn có thể bỏ qua ' xác minh 'và thực hiện điều tương tự. Bên cạnh đó tôi không chắc chắn lý do tại sao bạn sẽ đính kèm này để xác minh anyway như giai đoạn đó là dành cho "gói dự án và chạy thử nghiệm tích hợp". –

+0

@mglauche @matt cảm ơn nhận xét của bạn. Tôi vừa thực hiện những thay đổi thích hợp. – sfussenegger

43

Chỉ cần thêm một sự lựa chọn mà không yêu cầu bạn phải muck với cấu hình plugin:

mvn -DperformRelease=true [goals] 

tín dụng đi vào mcbeelen từ http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998

+3

Tôi muốn đề cập rằng tính năng này có thể biến mất trong bản phát hành Maven trong tương lai (có thể là Maven-4?). Hãy xem bình luận ở đây trong phần tiểu sử của Maven Super POM: http://maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html – Dan

16

Bài báo đề cập đến bởi Dan cũng đề cập đến cách tiếp cận khác mà làm việc mà không sửa đổi poms VÀ sẽ không biến mất bất cứ lúc nào sớm:

mvn clean javadoc: jar source: jar i nstall

nào hoạt động tốt với Maven 3+, cùng với ...

mvn sạch javadoc: nguồn jar: jar triển khai

Mà tôi đã thử nghiệm từ Jenkins triển khai cho Nexus.

Cách tiếp cận này rất hay vì tôi chỉ phải sửa đổi một số công việc của Jenkins và không cần phải gây rối với poms của tôi.

+3

Cảm ơn bạn đã có giải pháp không có pom! Lưu ý rằng nguồn ** javadoc: jar ** và/hoặc **: jar ** phải xuất hiện trước ** install ** hoặc ** deploy ** hoặc các jars phụ sẽ không được "đính kèm" vào triển khai . – seanf

+1

Đây có phải là những gì OP đã thử nhưng không muốn? – peedee

+0

FWIW các tùy chọn này cũng hoạt động với 'gói':' mvn clean javadoc: jar source: jar package' – ecoe

Các vấn đề liên quan