2008-09-25 28 views
20

Ngay bây giờ, tôi có hai dự án Eclipse - cả hai đều sử dụng Maven 2 cho tất cả sự tốt đẹp phụ thuộc vào jar của chúng.Thêm các dự án nhật thực tham chiếu vào các phụ thuộc maven

Bên trong nhật thực, tôi có dự án Foo được đưa vào dự án xây dựng đường dẫn của Bar, để tôi có thể sử dụng các lớp của Foo từ thanh dự án. Đây hoạt động thực sự tốt trong đất nhật thực, nhưng khi tôi cố gắng:

mvn compile 

bên trong thư mục Bar, nó không thành công vì Maven không biết về mối quan hệ dự án để dự án trong build path của Eclipse.

Nếu tôi đang sử dụng kiến, tôi sẽ sử dụng nó để làm điều gì đó ngớ ngẩn như sao chép foo.jar vào đường dẫn lớp của dự án, nhưng theo như tôi có thể nói, mọi thứ được thực hiện ít hơn rất nhiều trong Maven.

Tôi tự hỏi nếu có cách giải quyết chuẩn cho loại vấn đề này - có vẻ như nó khá phổ biến và tôi chỉ thiếu một số thứ cơ bản về cách Maven hoạt động.

+0

aa .. shoot .. Tôi đã làm điều này trước đây. Nhưng không thể tìm thấy nó ngay bây giờ (ở nhà) .. Nếu vẫn không có câu trả lời bởi thời gian tôi nhận được trở lại văn phòng .. Tôi sẽ tìm nó cho bạn. – paan

Trả lời

17

Có thể bạn đang tham chiếu đến dự án khác thông qua eclipse configure-> build path. Điều này làm việc miễn là bạn sử dụng Eclipse để xây dựng dự án của bạn.

Thử chạy cài đặt mvn đầu tiên trong thanh dự án (để đặt Thanh trong kho lưu trữ maven của bạn), và sau đó thêm phụ thuộc vào tệp pom.xml của Foo.

Điều đó sẽ hoạt động.

1

Tôi nghĩ cách tốt nhất để xử lý nó là biến Bar thành một dự án Maven giống như Foo, và sau đó mvn install nó để nó có sẵn trong kho lưu trữ Maven cục bộ của bạn. Hạn chế là bạn phải cài đặt dự án đó mỗi khi bạn muốn Maven thấy những thay đổi bạn thực hiện đối với Bar.

+0

Đây chính là điều mọi người muốn tránh. Nếu bạn đang phát triển bạn thay đổi mọi thứ mọi lúc. Ai sẽ muốn 'mvn install' mỗi lần. – T3rm1

1

Không phải là câu trả lời hoàn chỉnh:
Dịch vụ của Bar cần bao gồm Foo để sử dụng maven để biên dịch nó.
Tôi cũng quan tâm đến câu hỏi này, nhưng từ quan điểm về cách nhận nhật thực để nhận ra phụ thuộc vào maven thực sự là một dự án khác trong cùng một không gian làm việc. Tôi hiện đang thay đổi đường dẫn xây dựng sau khi thực hiện mvn eclipse:eclipse

8

Kiểm tra plugin m2eclipse. Nó sẽ tự động và tự động cập nhật đường dẫn xây dựng dự án khi bạn thay đổi pom. Không cần chạy mvn eclipse:eclipse.

Plugin cũng sẽ phát hiện xem có bất kỳ phụ thuộc nào trong cùng một không gian làm việc và thêm dự án đó vào đường dẫn xây dựng hay không.

Lý tưởng nhất, nếu bạn sử dụng m2eclipse, bạn sẽ không bao giờ thay đổi đường dẫn xây dựng dự án theo cách thủ công. Bạn sẽ luôn luôn chỉnh sửa pom.xml thay vào đó, đó là cách thích hợp để làm điều đó.

Như đã được đề cập trước đó, Maven sẽ không biết về đường dẫn xây dựng dự án Eclipse. Bạn cần phải thêm tất cả các phụ thuộc vào pom, và bạn cần phải chắc chắn rằng tất cả các phụ thuộc được xây dựng và cài đặt đầu tiên bằng cách chạy mvn install.

Nếu bạn muốn xây dựng cả hai dự án với một lệnh duy nhất thì bạn có thể thấy project aggregation thú vị.

2

Bạn có thể muốn thử phương pháp thay thế, nơi bạn có dự án maven mẹ và dự án cho hai trẻ em. giả sử:

Cha mẹ (pom.xml có tham chiếu đến cả trẻ em các dự án/modules) -> A (phụ thuộc vào B) -> B

sau đó khi bạn chạy mvn eclipse: eclipse từ thư mục gốc của phụ huynh, maven sẽ tạo ra các dự án thực cho A và B, và nó sẽ có B là một dự án cần thiết trong đường dẫn lớp A.

Bạn có thể chạy mvn cài đặt từ gốc của phụ huynh để có được cả hai dự án để biên dịch.

Để hoàn tất thiết lập, bạn sẽ phải nhập cả A và B vào Eclipse, đảm bảo bạn không chọn "Sao chép dự án vào không gian làm việc".

0

Nếu bạn tham khảo một dự án cục bộ, nhưng phiên bản của nó đã được cập nhật (thường tăng), nó có thể chỉ tìm thấy trong repo cục bộ của bạn và bạn phải cập nhật phiên bản (có khả năng cố định) trong POM của bạn).


Chúng tôi có một "dự án chung" (được sử dụng ở khắp mọi nơi) mà không nhất thiết cần phải được phiên bản kể từ khi chúng tôi tag nó thông qua kiểm soát nguồn. do đó, hoặc

  • giữ nó ở một phiên bản cố định hoặc
  • tham khảo nó với LATEST phiên bản đặc biệt

được cách giải quyết tốt để luôn được ở bên an toàn.

0

Tôi chỉ cần thực hiện việc này và tôi cần nó để xây dựng với lệnh cài đặt sạch mvn bên ngoài. Đây là cách thích hợp để cấu hình điều này trong Eclipse. (Với dự án B là sự phụ thuộc của A)

  1. Mở tệp pom.xml cho dự án A trong Eclipse.
  2. Chuyển đến tab Dependencies.
  3. Nhấp vào nút Add... ở giữa trang (đối với hộp phụ thuộc bên trái)
  4. Trong hộp bật lên, sẽ có một hộp bên dưới dòng có văn bản phía trên có nội dung là Enter groupId, artifactId or sha1 prefix or pattern (*):. Nhập ID tạo tác cho dự án B vào hộp này.
  5. Nhấp đúp vào bình bạn muốn thêm làm phụ thuộc cho dự án này
    1. Bạn có thể cần cập nhật dự án sau.
    2. Dự án nhấp chuột phải A trong bạn Gói thám hiểm
    3. Maven -> Cập nhật dự án ...
    4. Sau đó nhấn OK trong cửa sổ bật lên.
Các vấn đề liên quan