2010-10-29 38 views
8

Tôi có một số dự án di sản liên quan mà là một mớ hỗn độn và tôi muốn mavenize chúng như là một dự án đa mô-đun được chia sẻ trên lật đổ (lần đầu tiên dự án đa mô-đun , chúng tôi luôn tách riêng chúng). Có một vài phần quan trọng 1) webservice, 2) khách hàng swing khác nhau, 3) mô hình (w/persistence từ hibernate), 4) nhiệm vụ JSE cốt lõi.Eclipse + Subversion (subclipse) + Maven (m2eclipse) dự án đa mô-đun

Tôi đã rối tung một vài ngày cố gắng thiết lập chính xác nó bằng Eclipse (Helios), Maven (2.2.1), m2eclipse (0.10.0) và Subversion (1.6) cho nhóm của chúng tôi. Tôi tiếp tục stumping bản thân mình hoặc có lỗi ngẫu nhiên buộc tôi quay trở lại. Tôi hy vọng ai đó có thể giúp tôi với một số phương pháp hay nhất.

Dưới đây là một số câu hỏi:

m2eclipse yêu cầu cấu trúc dự án nhật thực "phẳng". Điều đó có nghĩa là tôi nên tạo một kho lưu trữ lật đổ cho mỗi mô-đun? Nếu tôi làm một kho lưu trữ và cố gắng kiểm tra từ dự án mẹ tôi đang gặp khó khăn trong việc thiết lập thuộc tính svn: ignore trên thư mục đích của dự án lồng nhau (và các thư mục khác).

Nếu tôi làm một module mỗi kho, tôi dường như để có thể kiểm tra chúng trong ok. Câu hỏi sau đó là cách tốt nhất để kiểm tra thông qua subclipse là gì? Có một thứ tự tốt nhất? Phụ huynh hoặc trẻ em dự án (s) đầu tiên? Tôi có cần phải kiểm tra dự án cha mẹ và sửa đổi đường dẫn thanh toán của dự án trẻ em được lồng trong thư mục tệp sẽ cho phép tôi sau đó "cài đặt sạch" từ dự án mẹ không?

Hoặc, tôi nên từ bỏ subclipse và m2eclipse và kiểm tra và chạy mục tiêu maven của tôi từ dòng lệnh.

Hoặc, nên tôi chỉ được sử dụng tích hợp SCM với Maven. Hoặc, có thể thậm chí không cố gắng để có được một thiết lập dự án đa mô-đun.

làm người khác làm gì? Có ai có một số tài liệu (tôi bị mất) hoặc một số liên kết (Google không khuyên bạn nên)?

Cảm ơn trước sự phản hồi của bạn.

Trả lời

8

m2eclipse yêu cầu cấu trúc dự án nhật thực "phẳng".

Hmm, m2eclipse hỗ trợ các dự án lồng nhau AFAIK (hoặc ít nhất nhập cấu trúc dự án lồng nhau). Tôi không sử dụng các trình thủ thuật Eclipse để tạo các dự án của mình mặc dù vậy có lẽ tôi không nhận thức được điều gì đó.

Điều đó có nghĩa là tôi nên tạo kho lưu trữ lật đổ cho từng mô-đun?

Không, không, tuyệt đối không và tôi sẽ không làm điều đó (điều này sẽ khó duy trì). Tuy nhiên, tùy thuộc vào chu kỳ phát hành dự án của bạn, bạn có thể phải suy nghĩ về bố cục kho lưu trữ của bạn (so với nhiều thân cây/thẻ/nhánh), đặc biệt nếu bạn định sử dụng plugin phát hành maven. Nếu một số phần có chu kỳ phát hành độc lập, sau đó tôi sẽ đi cho một số thân cây/thẻ/chi nhánh. Nếu bạn luôn phát hành tất cả chúng lại với nhau (như một sản phẩm), thì một thân cây/thẻ/nhánh sẽ làm việc đó. Tôi viết vài câu trả lời về chủ đề này mà bạn có thể quan tâm:

Nếu tôi làm một kho lưu trữ và cố gắng kiểm tra trong từ dự án cha mẹ Tôi đang gặp khó khăn trong việc thiết lập thuộc tính svn: ignore trên các thư mục đích của dự án lồng nhau (và các thư mục khác).

Vấn đề cụ thể là gì?

Nếu tôi làm một mô-đun cho mỗi kho lưu trữ, tôi có vẻ như có thể kiểm tra chúng trong ok. Câu hỏi sau đó là cách tốt nhất để kiểm tra thông qua subclipse là gì? Có một thứ tự tốt nhất? Phụ huynh hoặc trẻ em dự án (s) đầu tiên? Tôi có cần phải kiểm tra dự án cha mẹ và sửa đổi đường dẫn thanh toán của dự án trẻ em được lồng trong thư mục tệp sẽ cho phép tôi sau đó "cài đặt sạch" từ dự án mẹ không?

Bất kỳ lựa chọn nào bạn sẽ thực hiện (nhiều kho lưu trữ hay không, nhiều trunk/tags/chi nhánh), có thể thanh toán toàn bộ cấu trúc dự án trong một lần (sử dụng svn:externals nếu được yêu cầu). Ít nhất, bạn nên cố gắng làm cho nó có thể (và nó là, xem các liên kết được đăng ở trên).

Nhưng tôi nhắc lại, tôi không khuyên bạn nên sử dụng nhiều kho (trừ khi bạn muốn số sửa đổi độc lập) và không có gì buộc bạn làm điều đó.

Hoặc, tôi có nên từ bỏ subclipse và m2eclipse và kiểm tra và chạy mục tiêu maven của tôi từ dòng lệnh.

Tôi sử dụng Eclipse, m2eclipse, subclipse thành công, tất cả được tích hợp tốt (ít nhất là cho phần xây dựng và "đăng ký"). Nhưng tôi thực hiện việc nhập ban đầu và thanh toán ban đầu trên dòng lệnh và sau đó nhập

Hoặc, tôi chỉ nên sử dụng tích hợp SCM với Maven.

Tôi không sử dụng, tôi không có nhu cầu.

Hoặc, có thể thậm chí không cố gắng thiết lập dự án nhiều mô-đun.

Không có lý do gì để cấm sử dụng thiết lập dự án nhiều mô-đun, multi-modules builds là một trong những phần quan trọng của Maven.

Người khác làm gì? Có ai có một số tài liệu (tôi bị mất) hoặc một số liên kết (Google không khuyên bạn nên)?

Có một cái nhìn tại các liên kết tôi đăng :)

+0

Cảm ơn! Tôi sẽ kiểm tra các liên kết đó. Nếu tôi chia sẻ dự án cha mẹ tôi có thể thành công svn: bỏ qua các mục tiêu, .settings, .classpath, vv, tất cả trong dự án mẹ. Các dự án con đều có svn: ignore grayed out. Sau khi tinkering với nó, cách duy nhất tôi có thể svn: bỏ qua các dự án con là thực hiện cam kết đầy đủ của dự án cha, sau đó xóa các thư mục trong các dự án con mà tôi muốn bỏ qua, sau đó commit, sau đó tùy chọn svn: ignore là có sẵn và tôi có thể bỏ qua chúng cho các cam kết trong tương lai. Bạn có nhận thấy điều đó không? Cảm ơn một lần nữa vì phản hồi thông tin của bạn. – chadmaughan

1

Nó là một chút khó khăn lúc đầu. Con đường tôi đã thường nhìn thấy nó thiết lập là như vậy:

Trong lật đổ:

- Parent Project 
-- Module A 
--- pom.xml (module A) 
-- Module B 
--- pom.xml (module B) 
-- Module c 
--- pom.xml (module C) 
-- pom.xml (parent project) 

Một số điều cần lưu ý (bạn đã biết):

  • Bạn phải có các dự án con được liệt kê dưới dạng mô-đun trong phụ huynh của bạn dự án
  • Bạn phải liệt kê dự án cha mẹ trong pom của con bạn (với tư cách là phụ huynh nhóm, artifac t, phiên bản)
  • Khi bạn kiểm tra dự án từ svn, bạn cần phải làm 'kiểm tra như dự án maven ' thay vì tiêu chuẩn 'kiểm tra' (cái này có thể một Gotcha)

Tôi hy vọng điều này sẽ hữu ích.

+4

Là một mặt lưu ý, bạn cần phải thêm "Maven SCM Handler cho Subclipse" từ bản cập nhật trang web M2Eclipse - http: //m2eclipse.sonatype. org/sites/m2e-extras, cho tùy chọn "Check out as maven project" được hiển thị. –

+0

@Croydon - thật thú vị. Đó phải là lý do tại sao nó không hoạt động trong hộp ở Indigo; Tôi đặt cược các tính năng bổ sung không được bao gồm - cảm ơn! – javamonkey79

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