2011-02-04 33 views
10

Chúng ta có: Eclipse 3.6, Maven (M2Eclipse), Hai Dự án (ProjectA và ProjectB) với pom.xml.Có phương pháp nào để sử dụng kho lưu trữ maven "Vùng làm việc" không?

ProjectB phụ thuộc vào ProjectA (sử dụng maven).

  1. Nếu chúng tôi cài đặt ProjectA vào kho lưu trữ cục bộ (cài đặt maven), Phụ thuộc giải quyết của ProjectB OK.

  2. Nếu chúng tôi không cài đặt ProjectA vào kho lưu trữ cục bộ. Trong Maven POM Editor, chúng tôi thêm ProjectA làm phụ thuộc của ProjectB (kho lưu trữ M2Eclipse sử dụng "workspace project" để giải quyết sự phụ thuộc này).

OK, đã thêm. Nhưng nếu chúng ta làm "gói maven" hoặc những người khác bổ sung các mục tiêu ... sự phụ thuộc không được giải quyết. Và chúng tôi có somethings như thế:

Downloading: http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml

và tất nhiên nó không thể được giải quyết.

Bây giờ là câu hỏi. Làm thế nào tôi có thể sử dụng "Dự án không gian làm việc" khi xây dựng ProjectB?

P.S. Tại sao tôi không sử dụng "cài đặt maven"? OK, nó là phương pháp 100%, nhưng khi tôi thực hiện nhiều thay đổi nhỏ trong một số thì quá lâu là hoạt động dư thừa.

P.S.S. "Dự án không gian làm việc", chúng ta có thể thấy Cửa sổ -> Hiển thị chế độ xem -> Kho lưu trữ Maven.

Trả lời

1
  1. Phụ thuộc vào không gian làm việc cần được giải quyết. Hãy thử điều này,

    chạy> Cấu hình chạy> Maven Xây dựng> mới> Chọn Dự án B> đánh dấu vào "giải quyết Workspace Artifact"> mục tiêu đề ra như package

    chọn ẩn hộp kiểm là tốt.

  2. Có lẽ, bạn cần cung cấp chính xác version của projectA trong thẻ phụ thuộc projectB. Khác, nó có thể nhìn vào kho lưu trữ công cộng Maven để kéo mới nhất.

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

+0

1. không được trợ giúp. "Đang tải xuống: http://repo1.maven.org/maven2/Project A .... pom". Cố gắng giải quyết bằng cách sử dụng kho lưu trữ công cộng. Được kiểm tra ngoại tuyến ngay lập tức viết "POM cho ProjectA là mất tích, không có thông tin phụ thuộc có sẵn". 2. Phiên bản được cung cấp. mmm ... sự cố không nằm trong kho công cộng. Vấn đề là trong việc giải quyết sự phụ thuộc Dự án trong không gian làm việc và không được cài đặt vào kho lưu trữ cục bộ. – Alexander

0

Hãy thử điều này (trong ProjectB):

Maven > Enable Workspace Resolution 

Một vấn đề tương tự đã được giải quyết ở đây theo cách đó.

2

Tôi nghĩ ý tưởng chạy 'gói Maven' hoặc các mục tiêu tương tự từ Eclipse là làm bất cứ điều gì maven sẽ làm nếu chạy từ dòng lệnh chẳng hạn. Kịch bản mà bạn đang đưa ra sẽ không làm việc trên dòng lệnh.

Nếu dự án B phụ thuộc vào dự án A (thông qua pom.xml) có nghĩa là dự án A sẽ có sẵn trong kho lưu trữ. Cho dù đó là địa phương (thông qua mvn cài đặt) hoặc từ xa thông qua (mvn triển khai) không quan trọng, nhưng gói mvn là không đủ. Điều đó sẽ chỉ đặt một gói trong thư mục/target.

Ngoại lệ duy nhất sẽ là nếu cả hai dự án cư trú trong cùng một lò phản ứng mà tôi giả sử, đó là cả hai dự án đều là các mô-đun của một số dự án 'cha mẹ' khác. Trong trường hợp đó kích hoạt mục tiêu maven trên một trong các mô-đun con có thể giải quyết các phụ thuộc được. Không chắc chắn 100% mặc dù.

Quay lại câu hỏi của bạn: "Bây giờ là câu hỏi. Làm cách nào tôi có thể sử dụng" Dự án không gian làm việc "khi xây dựng ProjectB?". Không, tôi không nghĩ vậy.

+0

Nếu M2Eclipse được thiết lập chính xác, nhấn "Project> Build All" trong Eclipse sẽ hoạt động như thể cả hai dự án đều nằm trong cùng một lò phản ứng và do đó sẽ hoạt động. Khi bạn đoán đúng, chỉ khi bạn thử "Run as> Maven build ..." mà bạn gặp rắc rối vì nó sẽ khởi chạy dòng lệnh Maven. – JBert

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