về chúng tôi
Tại 1C, chúng tôi không chỉ phát triển nền tảng
Nhập
Chúng tôi thường sử dụng maven làm hệ thống xây dựng cho các ứng dụng Java và trong bài viết ngắn này, chúng tôi muốn nói về một trong những vấn đề mà chúng tôi gặp phải trong quá trình tổ chức phát triển và về cách tiếp cận cho phép chúng tôi khắc phục vấn đề này vấn đề.
Điều kiện tiên quyết và quy trình làm việc
Do đặc thù phát triển trong các dự án maven của chúng tôi, chúng tôi sử dụng khá nhiều mô-đun, phần phụ thuộc và các dự án con. Số lượng tệp pom trong một cây có thể lên tới hàng chục hoặc thậm chí hàng trăm.
Có vẻ như: không có gì to tát, họ đã tạo ra nó một lần và quên mất nó. Nếu bạn cần thay đổi hoặc thêm nội dung nào đó vào tất cả các tệp cùng một lúc, có rất nhiều công cụ tiện lợi trong trình chỉnh sửa và IDE. Thay đổi thường xuyên nhất đối với pom.xml là gì? Chúng tôi tin rằng những thay đổi trong phiên bản dự án và các phần phụ thuộc. Có lẽ ai đó sẽ muốn tranh luận về điều này, nhưng đây chính xác là tình huống của chúng tôi. Lý do nằm ở chỗ, cùng với kernel, chúng tôi đang đồng thời phát triển nhiều thư viện của riêng mình và để có khả năng tái tạo liên tục các kết quả xây dựng và thử nghiệm, việc sử dụng ảnh chụp nhanh đối với chúng tôi dường như không phải là một cách tiếp cận thuận tiện. Vì lý do này, cần phải tăng số phiên bản trong các dự án với mỗi bản dựng.
Ngoài ra, đôi khi, nhà phát triển cần xây dựng nhánh thư viện của riêng mình và kiểm tra chức năng của nó dựa trên tất cả các phần phụ thuộc, do đó anh ta phải thay đổi phiên bản của tất cả chúng theo cách thủ công.
Giải pháp ban đầu
Với những thay đổi thường xuyên và nhiều phiên bản như vậy, tôi muốn đơn giản hóa và tự động hóa quy trình trong CI. Đây là lúc một plugin tiện lợi, nổi tiếng xuất hiện để giải cứu. phiên bản-maven-plugin - kết nối nó và khởi chạy nó
phiên bản mvn -N:set -DnewVersion=2.0.1
và Maven sẽ làm mọi thứ như bình thường: nó sẽ chạy qua hệ thống phân cấp từ trên xuống dưới, thay thế tất cả các phiên bản - vẻ đẹp! Bây giờ tất cả những gì còn lại là đưa ra yêu cầu kéo, đồng nghiệp sẽ xem xét các thay đổi và bạn có thể nhanh chóng tham gia vào đường trục. Nhanh chóng? Dù thế nào đi chăng nữa. Một vài trăm pom.xml để xem xét và đây không phải là tính mã. Ngoài ra, không ai an toàn trước những xung đột khi hợp nhất với số lượng lớn tệp bị thay đổi như vậy. Cần lưu ý ở đây rằng trong quy trình CI, các thay đổi phiên bản diễn ra tự động cùng với những thay đổi về chức năng chứ không phải riêng biệt theo cách nào đó.
Các tính năng mới
Chúng tôi bình tĩnh lại được một lúc và cam chịu, chúng tôi sống như vậy cho đến khi những người từ
mvn -Drevision=2.0.0 gói sạch
Giá trị thuộc tính hệ thống được ưu tiên hơn các giá trị được xác định trongtài sản>.
Cha mẹ
4.0.0
org.apache
apache
18
org.apache.maven.ci
ci-cha mẹ
Thân thiện với CI đầu tiên
${revision}${sha1}${changelist}
...
1.3.1
-CHỤP ẢNH
Con cháu
4.0.0
org.apache.maven.ci
ci-cha mẹ
${revision}${sha1}${changelist}
org.apache.maven.ci
ci-con
...
Nếu bạn muốn xây dựng phiên bản 2.0.0-SNAPSHOT thì chỉ cần sử dụng
mvn -Drevision=2.0.0 gói sạch
Nếu bạn muốn phát hành thì chỉ cần đặt lại SNAPSHOT
mvn -Dchangelist= gói sạch
*Các ví dụ trên được lấy từ
Thực tế khắc nghiệt
Mọi thứ đều tốt đẹp và lành mạnh, đã đến lúc cảm thấy hài lòng nhưng không. Hóa ra phương pháp này sẽ không hiệu quả để cài đặt và triển khai, vì nó sẽ không được thay thế trong mô tả về các tạo phẩm được xuất bản trong kho lưu trữ ${sửa đổi} về ý nghĩa của nó và maven sẽ không còn hiểu nó là gì nữa.
org.apache
apache
${sửa đổi}
Một ánh sáng cuối đường hầm
Chúng ta cần tìm kiếm giải pháp cho vấn đề. Có thể đã cứu được tình hình
Thêm plugin vào dự án
org.codehaus.mojo
làm phẳng-maven-plugin
1.1.0
ĐÚNG VẬY
giải quyếtCiFriendliesOnly
làm phẳng
tài nguyên quy trình
làm phẳng
làm phẳng.clean
lau dọn
lau dọn
Xong!
Kết cuộc hạnh phúc
Từ giờ trở đi, để thay đổi phiên bản của toàn bộ dự án và cho tất cả các phụ thuộc biết về nó, chúng ta chỉ cần chỉnh sửa phần tửsửa đổi> chỉ trong thư mục gốc pom.xml. Không phải một hoặc hai tệp trong số này có cùng một thay đổi sẽ được đưa vào đánh giá mà chỉ có một. Thôi, không cần dùng đâu phiên bản-maven-plugin.
Nguồn: www.habr.com