Tôi đã tìm kiếm một lúc và không tìm thấy giải pháp làm việc hoặc hướng dẫn/hướng dẫn nào để phát hành các mô-đun Maven khi sử dụng các mô-đun con Git lồng nhau.Phát hành nhiều tạo phẩm Maven khi sử dụng các mô-đun con Git lồng nhau
Chúng tôi có một cấu trúc phức tạp của các dự án công cộng và riêng tư yêu cầu một thứ tự cụ thể để xây dựng thành công. Mục tiêu của chúng tôi là thực hiện một bản phát hành Maven để gắn thẻ và triển khai nhiều hiện vật Maven trong một bước.
Đây là đơn giản hóa Maven dự án/mô-đun và Git cấu trúc kho:
parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository)
| |
| |- public-module:1.0.0-SNAPSHOT:jar
| (Maven module, child of parent-public, Git submodule, public repository)
|
|- parent-private:1.0.0-SNAPSHOT:pom
(Maven modules, Git submodule, private repository)
|
|- public-module:1.0.0-SNAPSHOT:jar
| (Maven module only, child of parent-public, Git submodule, public repository, released)
|
|- private-module:1.0.0-SNAPSHOT:war
(Maven module, child of parent-private, released)
Cấu trúc hiện nay cho phép Maven để xây dựng và triển khai các dự án/modules độc lập.
Khi phát hành public-module
(từ mẹ-công cộng/mẹ-private/public-mô-đun thư mục), các maven-release-plugin
hoạt động tốt (kho Git đã được gắn thẻ và phát hành cổ vật đã được triển khai).
Khi phát hành parent-private
, các maven-release-plugin
chuẩn bị và bắt đầu thực hiện việc phát hành trước khi thất bại trong mục tiêu thanh toán (vấn đề này sẽ được thảo luận here, nhưng giải pháp không hoạt động trong bối cảnh của tôi và không đủ uy tín để bình luận).
Đây là hiện tại maven-release-plugin
cấu hình:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagNameFormat>[email protected]{project.version}</tagNameFormat>
<commitByProject>true</commitByProject>
<pushChanges>true</pushChanges>
</configuration>
</plugin>
Có một cách thanh lịch để tổ chức các module Maven và kho Git để giải phóng nhiều hiện vật Maven? Ngoài ra, đã có ai đó tìm thấy một giải pháp để sao chép đệ quy Git submodules trong quá trình kiểm tra ngay trước khi triển khai hiện vật?
Đó có vẻ là một đa maven xây dựng mô-đun mà trong đó cần phải được trong một kho Git duy nhất thay vì submodules.Sau đó, bằng cách sử dụng một xây dựng đa mô-đun, bạn chỉ có thể triển khai/phát hành toàn bộ các mô-đun trong một bước.Vì vậy, câu hỏi là tại sao bạn muốn làm cho mọi thứ phức tạp hơn – khmarbaise
@khmarbaise: cảm ơn vì bình luận của bạn Chúng tôi đã quyết định đi một kho Git với nhiều mô-đun Maven vì chúng tôi không thể tìm thấy giải pháp _simple_ cho cấu trúc dự án của chúng tôi – almeidap
IMHO thực sự không có lựa chọn nào tốt. các bước trong khi phát hành đang tạo một _tag_, với thứ e ngữ nghĩa khôi phục mã từ thẻ này sẽ cung cấp cho tôi tất cả mã cho bản phát hành này. Nhưng với các mô-đun con GIT, không có cách nào để đảm bảo rằng người dùng nhận được mọi thứ từ thẻ đó, bởi vì anh ta có thể dễ dàng nhìn thấy mô-đun con như là mô-đun đầu tiên. –