Tôi đang sử dụng maven 2.2 với mối quan hệ 1.4.0maven triển khai thay đổi hiện vật chỉ
Hãy nói rằng tôi có một pom-cấu trúc như thế này (với các phiên bản tương ứng)
parentproj, v1.0.1
- childproj1, v1.0.2
- childproj2, v1.0.7
childproj1 và childproj2 đại diện khác nhau các phần của ứng dụng (ví dụ gui và backend) và tôi muốn có thể giữ riêng các phiên bản của chúng để tôi có thể phát hành phiên bản mới của chương trình phụ trợ mà không cần phải phát hành phiên bản mới của gui.
Bây giờ, để triển khai cấu trúc này để Nexus nó sẽ là thuận tiện để đi đến parentproj và nói
mvn triển khai -DperformRelease = true
đó sẽ triển khai tất cả các hiện vật để kho Nexus realease . Này làm việc tốt lần đầu tiên tôi triển khai nó, nhưng lần thứ hai tôi chạy vào vấn đề: chúng ta hãy nói rằng tôi đã thực hiện một bản cập nhật để childproj1 để chúng tôi bây giờ có các phiên bản sau:
parentproj, v1.0.1
- childproj1, v1.0.3
- childproj2, v1.0.7
Trong tình huống này Nexus sẽ không hãy để tôi làm mvn triển khai từ parentproj, vì nó đã có một bản sao của childproj2 trong phiên bản 1.0.7. Nexus sẽ nói "Tài nguyên, yêu cầu bất hợp pháp: Kho lưu trữ có ID = 'bản phát hành' không cho phép cập nhật các tạo tác". Điều này là tốt, tôi không muốn cập nhật các phiên bản hiện tại do nhầm lẫn. Nhưng tôi đoán rằng những gì tôi muốn làm là để có thể nói với maven một cái gì đó như "triển khai chỉ những hiện vật có phiên bản mà không có trong kho phát hành".
Có cách nào để thực hiện việc này hay tôi sẽ phải tự triển khai từng dự án?
Cảm ơn bạn đã trả lời John, chúng tôi cũng đang điều tra cách tiếp cận đó và nó có thể là một cách hoàn toàn phù hợp. Tôi đồng ý rằng phiên bản nhất quán mang lại rất nhiều giá trị, nhưng tôi cũng lo ngại rằng đối với một dự án lớn, quá trình xây dựng có thể quá cồng kềnh và tốn thời gian nếu bạn phải nâng cấp toàn bộ nền tảng cho bất kỳ thay đổi nào. – David
+1 để gợi ý cách sử dụng (đúng và chính xác) của vòng loại SNAPSHOT trên phiên bản để giải quyết vấn đề này. – whaley
Tôi không đồng ý với tuyên bố cuối cùng về việc được tổng hợp cùng nhau và kiểm tra cùng nhau. Nếu bạn có các phụ thuộc phiên bản cố định trên các JAR, Maven sẽ biên dịch dự án của bạn bằng các JAR đó để bạn vẫn sẽ nhận được mọi thứ được biên dịch cùng với các phụ thuộc phiên bản cố định hoặc SNAPSHOT. Đối với các bài kiểm tra, với các bài kiểm tra đơn vị thực sự, tôi nghĩ rằng các phụ thuộc lớp, đặc biệt là trên các ranh giới JAR, nên được chế giễu. Điều này có nghĩa là mã của bạn không bao giờ được thử nghiệm cùng nhau trừ khi bạn có một số loại kiểm tra chức năng/tích hợp chạy trên ứng dụng được triển khai, sau đó SNAPSHOT hoặc phiên bản cố định sẽ không thành vấn đề nữa. –