2011-10-20 39 views
12

Chúng tôi đã có một dự án đa mô-đun bằng Eclipse và Maven. Cách duy nhất tôi có thể làm cho nó hoạt động trong quá khứ là sử dụng một bố trí bằng phẳng cho các dự án, nơi mà mô-đun chính là một đồng đẳng với các mô-đun khác. Điều này làm việc tốt với m2eclipse và Subversion.Eclipse + Maven + Git + Dự án đa mô-đun = Không thích

Bây giờ, chúng tôi muốn chuyển sang Git và GitHub. Tôi muốn trưng bày toàn bộ dự án, cùng với tất cả các mô-đun, như một dự án duy nhất trên GitHub. Vấn đề là EGit, plugin Eclipse/Git, muốn quản lý từng dự án, không phải các nhóm dự án và vì vậy nếu bạn có bố cục bằng phẳng, bạn không thể thực hiện nó.

Câu trả lời đúng là sử dụng bố cục phân cấp Maven chuẩn và quản lý phụ huynh và tất cả các mô-đun dưới dạng đơn vị. Nhưng Eclipse không thích điều đó, và không có số lượng không quan trọng sẽ làm cho Eclipse chấp nhận các dự án lồng nhau. m2Eclipse không hỗ trợ cấu trúc phân cấp: https://issues.sonatype.org/browse/MNGECLIPSE-2291

Vì vậy, bạn sẽ làm gì? Do Git từ dòng lệnh và từ bỏ khả năng xem những tệp nào đã thay đổi trong Eclipse? Hoặc bỏ Eclipse?

Trả lời

12

Cấu trúc đa mô-đun Maven chuẩn làm một git repo đơn hoạt động hoàn toàn tốt cho tôi trong Eclipse Indigo với M2e và plugin git xuất hiện trong môi trường đó. Bạn không thể yêu cầu Eclipse thực hiện tìm nạp của bạn cho bạn, nhưng khi bạn đã lấy từ dòng lệnh, bạn sử dụng Team/Share, nói 'Git!' và tất cả đều tốt.

Tôi nghĩ rằng tôi thấy nguồn là gì: hệ thống phân cấp là vấn đề đối với các dự án bên trong không gian làm việc, không phải là 'các dự án hiện có' mà bạn nhập.

Dưới đây là một công việc điển hình:

  1. sử dụng git svn bản sao để có được một cái cây. đó là một cây mô-đun đa cấp, phân cấp theo thứ tự
  2. trong nhật thực, sử dụng dự án nhập/maven/hiện có. Điểm mà tại toàn bộ cây
  3. chọn tất cả
  4. OK

nó hoạt động tốt. Làm tổ không làm phiền nhật thực một chút. Tôi không biết vấn đề mà bz đang chỉ ra là gì.

Trước khi tôi sử dụng m2e, tôi đã sử dụng plugin maven-eclipse-plugin. Và nó cũng làm việc trong những trường hợp này, bởi vì nó không tạo ra một .project/.classpath cho <packaging>pom</packaging> các dự án tổng hợp, do đó Eclipse không bao giờ được gọi để thực sự làm tổ bất cứ điều gì.

Tôi không đơn độc - xem hướng dẫn thiết lập của nhà phát triển dưới dạng cxf.apache.org để biết ví dụ nguồn mở mà bạn có thể tự mình thử.

+0

là cấu trúc của bạn phân cấp hay phẳng? – ccleve

+0

phân cấp là những gì tôi có. – bmargulies

+0

Làm thế nào bạn có được Eclipse để đối phó với một bố trí phân cấp? Tôi không thể biên dịch được. Theo https://bugs.eclipse.org/bugs/show_bug.cgi?id=245412 Eclipse chưa hỗ trợ chúng. – ccleve

1

Bạn có thể đặt mô-đun của mình trong Git với bố cục phân cấp. Và xây dựng các mô-đun đó bằng Maven. Nếu các mô-đun đó là các dự án (bất kỳ dự án java, C++ hoặc php) nào được Eclipse nhận ra, chúng có thể được nhập vào không gian làm việc dưới dạng bố cục phẳng trong không gian làm việc.

-- the root of Git working directory 
    -- moudule1 
    -- project1(a java project) 
     -- .project(a project file recognized by eclipse JDT) 
     -- pom.xml 
    -- project2(a java project) 
     -- .project 
     -- pom.xml 
    -- module2 
    -- projectA(a java project) 
     -- .project(a project file recognized by eclipse JDT) 
     -- pom.xml 
    -- projectB(a c++ project) 
     -- .project(a project file recognized by CDT) 
     -- pom.xml 
+0

Làm cách nào? Nếu chúng được sắp xếp vật lý trên đĩa theo cách phân cấp, bạn nhập chúng bằng phẳng như thế nào? – ccleve

+0

Không gian làm việc không quan tâm đến vị trí của dự án (có thể nằm dưới vùng làm việc hoặc bất kỳ đâu trên đĩa). Mỗi dự án chỉ có một tệp .project trong thư mục gốc, Eclipse có thể nhập nó vào không gian làm việc mà không cần sao chép nó vào vùng làm việc. Xem câu trả lời cập nhật của tôi. – Kane

4

Có thể bạn đang làm việc với các phiên bản cũ của công cụ?

Tôi có một dự án đa mô-đun Maven mà tôi làm việc với việc sử dụng Eclipse 3.7 (Indigo), M2Eclipse (1.0) và EGit (1.0).

Trên hệ thống tệp, dự án nhiều mô-đun có một thư mục mẹ duy nhất.

Trong Eclipse tôi có các dự án riêng biệt cho mỗi mô-đun.

M2Eclipse thực hiện quản lý phụ thuộc một cách hoàn hảo.

Có một kho lưu trữ git (thư mục .git) ở cấp cao nhất và EGit hoạt động hoàn hảo.

+0

+1 vì tôi đang sử dụng các phiên bản cũ và mọi thứ đã thay đổi khi tôi nâng cấp. – ccleve

+1

"Trong Eclipse tôi có các dự án riêng biệt cho mỗi mô-đun." Đối với những người tự hỏi, hệ thống tập tin là một hệ thống phân cấp làm việc, nhưng m2eclipse sẽ vẫn không cho phép bạn quản lý một mô-đun cha/con như một hệ thống phân cấp dự án duy nhất. Mỗi mô-đun cho m2eclipse phải có một dự án trong Eclipse hoặc Eclipse khác sẽ không tìm thấy các loại lớp hoặc các mối quan hệ giữa chúng. –

0

Đối với dự án Maven, nhiều lần nhập cùng một lúc có thể đạt được thông qua trình hướng dẫn nhập Maven (có thể truy cập từ Git). Trong trường hợp bạn không biết loại dự án bạn sắp nhập, bạn có thể sử dụng Easymport mới sẽ nhập dự án "tốt nhất", bằng cách suy luận cấu hình từ các tệp khác nhau. Xem https://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

Một khi bạn nhận được tất cả các dự án, bạn có thể sử dụng plugin Nestor, mà sẽ hiển thị dự án trong một bố cục lồng/phân cấp, lập bản đồ một cách chính xác hơn dự án Maven của bạn: https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects

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