2009-10-06 8 views
6

Tôi đang chuyển đổi một dự án kiến ​​thành một con quạ. Dự án này khác với những dự án tôi thường chuyển đổi vì nó có bản phát hành rất thường xuyên, thường là 8-10 lần mỗi ngày.Versioning cho một dự án maven với các bản phát hành nhỏ, rất thường xuyên

Bằng cách giải phóng, tôi có nghĩa là bình kết quả được đóng gói và đưa vào môi trường sản xuất. Dự án này là một, do đó, nó xuất bản không có API, nó chỉ tiêu thụ nó. Đó cũng là thời gian chạy tối đa thời gian chạy cho hai dự án khác.

Tôi muốn có một chương trình phiên bản đó:

  • thật dễ dàng để triển khai mà không buộc các nhà phát triển để suy nghĩ về phiên bản những gì số để gán cho dự án, kể từ khi số lượng là vô nghĩa;
  • Thật dễ dàng để bao gồm phiên bản mới nhất của dự án này là sự phụ thuộc mà không phải liên tục cập nhật các phiên bản phụ thuộc;

Nhiều khả năng phiên bản phụ thuộc sẽ không là -SNAPSHOT, vì điều đó sẽ xung đột với maven-release-plugin chúng tôi đang sử dụng cho các dự án khác, nhưng tôi đang mở để đề xuất.

Trả lời

5

Thực ra, bạn có thể sử dụng phiên bản x-SNAPSHOT và vẫn sử dụng maven-release-plugin. Chỉ cần sử dụng mvn release:prepare trước mvn release:perform để chuẩn bị bản phát hành của bạn và thay đổi phiên bản trong poms từ x-SNAPSHOT thành phiên bản mới (bạn sẽ được nhắc sử dụng phiên bản). Bạn có thể xem số điện thoại introduction này để xem maven-release-plugin để có tổng quan nhanh về release:preparerelease:perform.

Sau đó, để bao gồm các phiên bản mới nhất mà không cần liên tục cập nhật phiên bản phụ thuộc, bạn có thể sử dụng phạm vi phụ thuộc như trong đoạn mã sau đây chúng tôi chỉ định một loạt Junit 3,8 - Junit 4.0:

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>[3.8,4.0)</version> 
    <scope>test</scope> 
</dependency> 

Một phiên bản trước hoặc sau dấu phẩy là không cần thiết, và có nghĩa là +/- vô cùng. Ví dụ: [4.0,) nghĩa là mọi phiên bản lớn hơn hoặc bằng 4.0.

Cá nhân, tôi không thích sử dụng phạm vi phụ thuộc nhiều vì tôi thấy rằng nó có thể dẫn đến xây dựng các vấn đề về khả năng tái tạo và làm cho việc xây dựng trở nên mong manh hơn.

Nhưng bạn có thể có lý do chính đáng để sử dụng chúng.

+0

Cảm ơn câu trả lời. Tôi _might_ kết thúc làm chính xác điều này, nhưng tôi vẫn có vấn đề rằng các phiên bản và phát hành là không thích hợp cho dự án này - đó là trong một trạng thái của thông lượng liên tục. –

+0

Theo hiểu biết của tôi, bạn có 2 lựa chọn ở đây: 1. Sử dụng một phiên bản chụp (tốt cho dòng liên tục) và quên plugin phát hành nhưng tôi sẽ không làm điều này với mã sản xuất 2. sử dụng plugin phát hành và phiên bản tăng dần (hoặc maven sẽ không chọn cập nhật). Tôi không biết nếu có một giải pháp đáp ứng ở giữa. –

+0

+1 cho phạm vi phiên bản và plugin phát hành, xem câu trả lời này để có thêm tùy chọn: http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version- of-a-dependency/1172371 # 1172371 –