2012-04-24 22 views
5

Tôi có một dự án here hiện đang sử dụng một tệp pom.xml (link) để tạo một "tạo tác".maven: tạo ra một số "hiện vật" với cùng một tệp pom?

Những gì tôi muốn làm là chia dự án, chúng ta hãy gọi nó là p, thành:

  • p-core, trong đó có quá trình xác nhận cốt lõi;
  • định dạng p, có chứa xác thực từ khóa "định dạng", phụ thuộc vào p-core.

Lý do tôi muốn làm điều này là phụ thuộc: định dạng p kéo trong hơn 70% chỉ trong khối lượng và không sử dụng nhiều Lược đồ JSON yêu cầu hỗ trợ định dạng.

Tôi có cần phải xây dựng hai dự án hoàn toàn riêng biệt hay tôi có thể sử dụng một tệp pom.xml để tạo hai tạo phẩm này không? Tôi đoán sau này là doable, vì rất nhiều dự án đã làm điều đó (Jackson, ví dụ).

[Trong trường hợp nó sẽ có bất kỳ quan trọng, tôi xuất bản thông qua repo maven Sonatype của]

Trả lời

6

Bạn nên tạo hai dự án riêng biệt (hai POM được tách riêng), nhưng có lẽ một ý tưởng hay là tạo bố mẹ chung cho chúng cũng tổng hợp chúng làm mô-đun. Xem số Dự án thừa kếTổng hợp dự án các phần của Introduction to the POM đối với một số khái niệm cơ bản.

Trong Maven, bạn không nên thử hack nó để tạo ra nhiều tạo phẩm khác nhau từ một POM.

+0

Cảm ơn bạn đã liên kết! Tôi sẽ nghiên cứu cẩn thận và xem điều gì sẽ là tốt nhất cho tôi. Bạn có nghĩ rằng tôi tốt hơn bằng cách sử dụng một pom.xml "chủ" và hai tiểu dự án hoặc hai cây hoàn toàn khác nhau? – fge

+1

Tôi nghĩ rằng trong trường hợp của bạn nó sẽ tốt hơn để tạo cha mẹ 'pom.xml' và hai mô-đun trong thư mục con mà cha mẹ này cũng tổng hợp như mô-đun. Xem các liên kết này để biết chi tiết và ví dụ. –

2

Cuộc sống của bạn sẽ dễ dàng hơn nhiều nếu bạn chỉ đơn giản là thoát ra khỏi p định dạng thành một dự án riêng biệt mà phụ thuộc vào p-core .

Mặc dù có nhiều cách để xuất bản nhiều tạo phẩm cho mỗi dự án, Maven được thiết kế xung quanh một tạo phẩm cho mỗi pom/mô-đun (cộng với các tạo phẩm thử nghiệm). Từ kinh nghiệm, nỗ lực thông minh để làm việc xung quanh điểm thiết kế này sẽ cuối cùng cắn bạn cuối cùng - thường là dưới hình thức một vấn đề 6 tháng xuống đường nơi bao bì sẽ không hoạt động đúng trên máy của ai đó.

Kịch bản bạn mô tả phù hợp trong trường hợp sử dụng nhiều dự án và tôi khuyên bạn nên đi với luồng và làm cho tương lai của bạn tự sướng.

3

Bạn có thể sử dụng plugin lắp ráp maven (http://maven.apache.org/plugins/maven-assembly-plugin/). Nếu hai tạo tác có các lớp chồng lên nhau và cập nhật một lớp luôn yêu cầu cập nhật một lớp khác, thì đây là một lựa chọn tốt.

Bạn phải nghĩ chu kỳ sống của các hiện vật. Cả hai hiện vật có cần có cùng số phiên bản không? Bạn có muốn xuất bản phiên bản p-core mới bất cứ khi nào bạn sửa lỗi ở định dạng p không? Liệu p-core có hữu ích không?

Plugin lắp ráp chủ yếu nên được sử dụng để cung cấp một bao bì khác cho cùng một đồ tạo tác, tôi đoán vậy.

0

Tôi đã có một trường hợp tương tự và tôi đồng ý với đề xuất của Michal. Tuy nhiên, tôi muốn mở rộng giải pháp được đề xuất thêm:

Tôi giả định p có một nguồn duy nhất và cả định dạng p-core và p đều được tạo từ nó.Vì vậy, bạn nên tạo một POM cha mẹ cho p với mô-đun trẻ em (với POMs tương ứng) - một cho 'lõi' và một cho 'định dạng' nhưng có cả hai nguồn từ của cha/src /. Vì vậy, về cơ bản chúng tôi tách biệt các quy trình xây dựng cho 'lõi' và 'định dạng' để tạo ra các tạo phẩm cụ thể nhưng không sao chép các nguồn gốc cho p.

Maven hỗ trợ nhưng không đề xuất phương pháp này nhưng tôi không thấy lý do tại sao họ không nên. Theo ý kiến ​​của tôi, cấu trúc của nó, sạch sẽ và mối quan tâm-seperating mà không có bất kỳ tác động lâu dài và không có thay thế tốt hơn.

http://maven.apache.org/guides/mini/guide-using-one-source-directory.html

Các vấn đề liên quan