Làm thế nào để triển khai SNAPSHOT với các nguồn và JavaDoc?


92

Tôi muốn triển khai các nguồn và javadocs bằng ảnh chụp nhanh của mình. Điều này có nghĩa là tôi muốn tự động hóa lệnh sau:

mvn clean source:jar javadoc:jar deploy

Chỉ để thực hiện:

mvn clean deploy

Tôi không muốn thực thi tạo javadoc / sources trong quá trình install giai đoạn này (tức là các bản dựng cục bộ).

Tôi biết rằng plugin nguồn / javadoc có thể được đồng bộ hóa với quá trình thực thi của releaseplugin nhưng tôi không thể tìm ra cách kết nối nó với các bản phát hành ảnh chụp nhanh.

Câu trả lời:


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>

Xem POM gốc OSS của Sonatype để biết ví dụ hoàn chỉnh.


1
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, các nguồn được tạo 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 phiên bản đó sẽ gây ra để tạo ra nguồn phát hành hai lần (và do đó deploeyed hai lần, mà sẽ dẫn đến các vấn đề với các nhà quản lý kho)
mglauche

1
maven-source-plugin:jarđược đính kèm vào packagegiai đoạn theo mặc định, vì vậy bạn có thể rời khỏi <phase>verify</phase>và hoàn thành điều tương tự. Bên cạnh đó, tôi không chắc tại sao bạn lại đính kèm điều này để xác minh vì giai đoạn đó được dành cho "gói dự án và chạy thử nghiệm tích hợp".
matt b

@mglauche @matt cảm ơn ý kiến ​​của bạn. Tôi vừa thực hiện những thay đổi thích hợp.
sfussenegger

1
@Henryk Ok, tôi đã thêm rõ ràng maven-deploy-plugin cũng như maven dường như (hoặc cố gắng) để đảm bảo thực thi trong oder các plugin được xác định trong POM. Tuy nhiên, nó có thể yêu cầu một số thử nghiệm.
sfussenegger

1
sử dụng id ngẫu nhiên tạo ra thực hiện mới, tôi nghĩ bạn sẽ muốn "remap" mặc định một thi
Hurda

48

Chỉ để thêm một giải pháp thay thế mà không yêu cầu bạn kết hợp với cấu hình plugin:

mvn -DperformRelease=true [goals]

Tín dụng được chuyển đến mcbeelen từ http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998


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

45

Bài báo do Dan đề cập đến cũng đề cập đến một cách tiếp cận khác hoạt động mà không cần sửa đổi poms VÀ sẽ không sớm biến mất:

mvn clean javadoc: jar source: jar install

Hoạt động tốt với Maven 3+, cùng với ...

mvn clean javadoc: jar source: jar triển khai

Cái mà tôi đã thử nghiệm từ việc 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 làm phiền với những người bạn của mình.


5
Cảm ơn vì một giải pháp không có pom! Lưu ý rằng javadoc: jar và / hoặc source: jar phải xuất hiện trước khi cài đặt hoặc triển khai , nếu không các lọ bổ sung sẽ không được "đính kèm" với triển khai.
seanf

2
FWIW các tùy chọn này cũng hoạt động với package:mvn clean javadoc:jar source:jar package
ecoe 28/01

Đây là câu trả lời hay, vì nó cho bạn biết lệnh chính xác để xây dựng và tải lên các nguồn và javadoc vào kho của bạn.
russellhoff
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.