2009-02-13 31 views
17

Nếu tôi có cha mẹ và muốn kế thừa điều này cho một số dự án. Tôi thường làm điều này bằng cách thêm vào đầu dự án <parent> ... </parent>. Những gì tôi không thích về cách tiếp cận này là nếu một cái gì đó thay đổi trong cha mẹ tôi, tôi phải chỉnh sửa tất cả các dự án được thừa kế bởi cha mẹ đó để sửa đổi số phiên bản. Có cách tiếp cận tốt hơn không? Tôi hy vọng nó là điều dễ hiểu những gì tôi đang cố gắng giải thích.Thừa kế Maven2

Xin cảm ơn trước.

Trả lời

2

Tôi nghĩ rằng điều quan trọng để nhận ra là trong một đa mô-đun xây dựng, maven luôn sử dụng phiên bản đó là từ bạn kho địa phương. Điều này cũng áp dụng trong các bản xây dựng đa mô-đun! Vì vậy, khi bạn tham khảo các "cha mẹ" pom bạn đang nhận được tạo tác cha mẹ xuất bản từ kho lưu trữ maven địa phương của bạn. Vì vậy, khi bạn làm mvn cài đặt bạn liên tục xuất bản từng mô-đun cho repo địa phương của bạn.

Trong khi phát triển, mô-đun của riêng bạn có thể được phiên bản thành một cái gì đó như X.X-SNAPSHOT. Tham chiếu đến parent-pom là X.X-SNAPSHOT. Đừng thay đổi những điều này trước khi bạn sẵn sàng phát hành.

Vì vậy, một trường hợp đơn giản sẽ là: Trước khi phát hành ban đầu, tất cả các mô-đun được gọi là 1.0-SNAPSHOT. Khi makin phát hành ban đầu "xây dựng vàng", hãy đổi tên tất cả các mô-đun 1.0-SNAPSHOT thành 1.0. Khi bắt đầu phát triển phiên bản 1.1, bạn thay đổi tất cả các số phiên bản thành 1.1-SNAPSHOT. Và như vậy ...

Tùy chỉnh là làm việc với các phiên bản chụp nhanh cho đến khi bạn phát hành, tại thời điểm đó bạn cập nhật số phiên bản ở mọi nơi. Trong quá trình phát triển hàng ngày, bạn không thay đổi số phiên bản vì các bản phát hành chụp nhanh được xử lý khác với bản phát hành phiên bản khó.

Edit: Sau khi một số nghĩ tôi nghĩ một số nhầm lẫn của bạn trong "ý kiến" phần phát sinh từ này: Số phiên bản trong pom của bạn phản ánh việc áp dụng phiên bản tổng thể . Bất kỳ thay đổi nào cho pom không nhất thiết phải thay đổi số ứng dụng. Nếu bạn cần phải theo dõi những thay đổi trong pom tôi sẽ đề nghị bạn sử dụng một hệ thống kiểm soát nguồn. Vì vậy, trong khoảng thời gian 3 tháng bạn làm việc trên phiên bản 1.0, bạn nên giữ số phiên bản ở mức 1.0-SNAPSHOT. Trong (ví dụ) khoảng thời gian 3 tuần bạn làm việc trên 1.1, số phiên bản là 1.1-SNAPSHOT.

+0

nếu mẹ tôi có phiên bản 1.0-SNAPSHOT. Và tôi thực hiện một sự thay đổi trong cha mẹ của tôi và tăng phiên bản để cho phép nói 1.1-SNAPSHOT tôi phải tăng nó trong mỗi đứa trẻ quá không? Tôi không hiểu ý của bạn bằng cách cập nhật mọi lúc. – kukudas

+0

Tôi đã cố chỉnh sửa;) – krosenvold

+0

? Tôi không hiểu :) – kukudas

6

Tự động hóa phiên bản dành cho cha mẹ (ví dụ: thiếu thẻ) là vấn đề gây tranh cãi trong không gian Maven. There is a defect logged against it. Hiện tại, tính năng này đang được xem là bản sửa lỗi hoặc cải tiến trong chi nhánh phiên bản 2.1,

8

Bạn có thể sử dụng Maven Release Plugin khi thực hiện bản phát hành. Nó sẽ tự động cập nhật tất cả các số phiên bản và tạo một thẻ trong điều khiển nguồn của bạn (nếu bạn đã cấu hình SCM trong POM).

Lệnh của tôi để thực hiện bản phát hành thường như sau, sau đó tôi xuất thẻ từ SCM và tạo nó bằng "gói sạch mvn" hoặc "triển khai sạch mvn".

svn update (or whatever SCM you use) 
    mvn clean 
    mvn release:prepare -DautoVersionSubmodules=true 
    mvn release:clean 

Vì vậy, ví dụ nếu bạn phiên bản đầu tiên "1.0-SNAPSHOT", sau đó các plugin phát hành sẽ tạo ra một thẻ "projectname-1.0" với phiên bản "1.0", và cuối cùng tăng phiên bản hiện tại để "1.1- SNAPSHOT ".Plugin sẽ hỏi bạn về các phiên bản và tên thẻ, vì vậy bạn có thể ghi đè các giá trị mặc định.

3

Bạn nên giữ phiên bản của mình dưới dạng ảnh chụp nhanh cho đến khi đến lúc phát hành. Bằng cách này bạn sẽ không phải thay đổi nó mỗi khi bạn thay đổi pom. Tuy nhiên một khi bạn đã phát hành một pom cha mẹ, bạn sẽ muốn thực hiện thay đổi cho tất cả các trẻ em (giả sử cha mẹ là bên ngoài xây dựng "lò phản ứng" ... nếu không nó sẽ có được tất cả các va chạm với nhau bởi các plugin phát hành). Có một plugin tương đối mới được gọi là plugin-maven-plugin có thể hỗ trợ thay đổi các phiên bản.

16

gì tôi không thích về cách tiếp cận này là nếu một cái gì đó thay đổi trong mẹ của tôi tôi phải chỉnh sửa tất cả dự án được thừa hưởng bởi cha mẹ rằng để sửa đổi số phiên bản. Có cách tiếp cận tốt hơn là không?

Có đó! Có một cái nhìn tại Maven Versions Plugin, cụ thể:

phiên bản: update-con-module cập nhật phần mẹ của module con của một dự án nên phiên bản phù hợp với phiên bản của dự án hiện tại .
Ví dụ, nếu bạn có một pom aggregator đó cũng là phụ huynh cho các dự án mà nó uẩn và các em và phụ huynh phiên bản được ra khỏi đồng bộ, mojo này có thể giúp sửa chữa các phiên bản của các module con .
(Lưu ý bạn có thể cần gọi Maven với tùy chọn -N để chạy mục tiêu này nếu dự án của bạn là bị hỏng quá nặng đến mức không thể xây dựng do phiên bản sai).


Edit: Tất nhiên, sử dụng Maven3 bây giờ bạn có thể có < phiên bản> -less < mẹ> yếu tố trong module phụ:

phát triển làm việc trong nhiều mô-đun hoặc đa Các dự án pom sẽ không phải chỉ định phiên bản gốc trong mỗi mô-đun phụ trong Maven 3. Thay vào đó, bạn có thể thêm các phần tử mẹ không có phiên bản.

Ref

+1

Có vẻ như các phần tử cha mẹ phiên bản chưa thực sự được triển khai. http://jira.codehaus.org/browse/MNG-624 – davidmc24