22

Chúng tôi sử dụng Hudson và maven-release-plugin để thực hiện việc xây dựng bản phát hành. Bây giờ tôi có một dự án có chứa một assembly mà tập hợp tất cả các thành phần cần thiết và sau đó gói chúng thành một gói .tar.gz với cấu trúc thư mục mong muốn.Triển khai gói lắp ráp với maven-release-plugin

Bây giờ tôi đang cố gắng để phát hành plugin để triển khai gói này đến kho lưu trữ Maven của chúng tôi trong khi phát hành: thực hiện mục tiêu, nhưng chỉ có các công cụ chuẩn (nguồn, javadoc, POM) được triển khai.

Tôi đã ràng buộc mục tiêu lắp ráp vào giai đoạn gói maven và tệp .tar.gz được tạo trong khi phát hành, nhưng không được tải lên kho lưu trữ. Bất kỳ gợi ý những gì tôi đang làm sai ở đây?

Dưới đây là cấu hình lắp ráp-plugin:

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

Lệnh tôi chạy để xây dựng một thông cáo là

mvn release:prepare release:perform release:clean 
+0

Có lẽ nếu bạn cho chúng ta thấy mã, hoặc mã obfuscated chúng tôi có thể có thể giúp bạn – ant

Trả lời

33

Trong khi đó, tôi tìm thấy 2 cách để làm những gì tôi muốn.

Các maven-build-helper-plugin cho phép thêm các mục thêm vào danh sách các hiện vật cần được triển khai:

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

khác là đơn giản như nó được và ai đó trên mailinglist maven-user chỉ ra điều này. Đơn giản sử dụng lắp ráp: mục tiêu duy nhất thay vì asssembly: lắp ráp. Bằng cách này, tạo phẩm được tạo sẽ được tải lên kho lưu trữ trong giai đoạn triển khai.

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

Xấu hổ các plugin không cho phép bạn xác định lại id tạo tác – Adam

1

Triển khai các file không được một phần của việc phát hành cắm nhưng plugin triển khai (bản phát hành không tự triển khai nội dung ở bất kỳ đâu nhưng bạn có thể định cấu hình plugin triển khai được gọi trong khi phát hành).

Thông thường, plugin triển khai sẽ triển khai tất cả các tạo tác đến kho lưu trữ từ xa nhưng các assembly không phải là tạo phẩm; Maven không thể sử dụng lưu trữ .tar.gz trong kho lưu trữ của mình theo bất kỳ cách nào, do đó, không có ý nghĩa gì khi triển khai chúng ngay từ đầu.

Nếu bạn cố gắng sao chép các tệp vô dụng vào kho lưu trữ, bạn phải sử dụng deploy:deploy-file (see the docs) để triển khai tệp theo cách thủ công và định cấu hình plugin với thực thi để gọi tệp đó trong bước phát hành. Nhưng tôi vẫn khuyên chống lại nó.

Điều bạn có thể đang tìm kiếm là cách tải lên một hội nghị ở đâu đó một cách tự động. Tôi không biết một plugin nào thực hiện điều này.

+0

Thx, đó là cách tôi đang thực hiện tại thời điểm này, mặc dù tôi đã không nhận nó làm việc ngay bây giờ. Nhưng theo tất cả các infos tôi đã tìm thấy rằng dường như là (chỉ?) Cách để đi nếu một trong những muốn tải lên các tập tin .tar.gz vào một kho lưu trữ. –

+0

tái khẳng định việc sao chép các tệp vô dụng vào repo - maven không phải là công cụ duy nhất để sử dụng kho lưu trữ. * Các tệp .tar.gz được nhiều công cụ đóng gói khác sử dụng, ví dụ: apt, con rối vv – Adam

+0

@Adam nhưng những công cụ này có kho lưu trữ riêng của họ và thường không thể sử dụng kho lưu trữ Maven. Vì vậy, nó sẽ có ý nghĩa để tải lên một repo Puppet nhưng không phải để một repo Maven. –

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