2011-09-04 14 views
7

Tôi hiện đang cố gắng để có được xây dựng của tôi (~ 30 bó) được thực hiện bởi tycho.
Tôi gặp phải một số vấn đề khó hiểu khi sử dụng Mockito trong các bài kiểm tra đơn vị của mình.
Tôi đã tạo một dự án phân đoạn eclipse-test-plugin cho gói thử nghiệm. Vì tycho nên giải quyết các gói cần thiết bằng cách sử dụng tệp kê khai, tôi đã xóa phụ thuộc vào mockito từ pom.xml.
Khi tôi cố gắng thêm mockito vào các gói được yêu cầu trong mockito kê khai không được liệt kê. Tôi tìm thấy this post và tạo ra một nền tảng mục tiêu trỏ đến eclipse indigo.
Tôi bao gồm các chi tiết cụ thể cho nền tảng nên tôi không cần gói eclipse delta. Sau đó, điều kỳ lạ đầu tiên xảy ra. Eclipse đang nói với tôi rằng có một số phụ thuộc không thỏa mãn và khi tôi đặt nền tảng đích mới được tạo ra như hoạt động trong nhật thực, không còn gói nào khác như org.osgi.framework, v.v ... có thể được giải quyết bằng nhật thực. Nhưng khi tôi xây dựng một eclipse-product bằng cách sử dụng tycho và nền tảng đích mà nó đang hoạt động.Làm thế nào để tham khảo mockito trong tycho?

My target-platform

Nếu tôi đặt quá trình cài đặt thực hiện như là nền tảng hoạt động các bó được giải quyết. Tôi đã chọn sau đây của việc phát hành chàm:

  • Eclipse RCP Plug-in Tài nguyên nhà phát triển phần
  • Equinox Target Components
  • Jetty Target

Vì vậy, câu hỏi đầu tiên của tôi là "gì là sai với nền tảng mục tiêu của tôi để tycho có thể sử dụng nó nhưng nhật thực không phải là? "

Để tiến gần hơn đến vấn đề ban đầu của tôi (chạy mockito), tôi cài đặt nhật thực hiện tại làm nền tảng mục tiêu hoạt động. Eclipse sau đó có thể giải quyết gói org.osgi.framework và các gói khác.
Tôi đã thêm rồi phụ thuộc đã loại bỏ trước đó vào mockito một lần nữa vào số pom.xml như trong bài đăng đã đề cập ở trên. Nhưng tôi vẫn không thể tìm thấy mockito khi tôi cố gắng thêm nó vào các gói được yêu cầu trong tệp kê khai.

Vì vậy, câu hỏi thứ hai của tôi là "Tôi đang làm gì sai? Làm cách nào để bạn tham khảo các gói không được xuất bản trên trang nhật thực cập nhật, ví dụ: kho lưu trữ trung tâm của maven?"

Cập nhật: Trong nghiên cứu của tôi, tôi tìm thấy hai cách để bao gồm các gói từ phi p2-update-site trong mục tiêu nền tảng của tôi:

  1. Nexus Pro
    Các chuyên nghiệp phiên bản của Nexus hỗ trợ kho lưu trữ p2-Proxy có thể bọc các kho lưu trữ maven mặc định như Kho lưu trữ trung tâm Maven vào trang web cập nhật p2, nhưng phiên bản chuyên nghiệp có giá khoảng 800 đô la mỗi năm.
  2. Tạo một nhật thực-kho
    Bạn có thể tạo một dự án mới với maven bao bìeclipse-repositorybao gồm tất cả các nhóm của bạn mong muốn. Tạo phẩm được tạo sau đó được triển khai tới một máy chủ web phổ biến.

Trong nền tảng mục tiêu của bạn, bạn có thể tham khảo kho lưu trữ proxy p2 Nexus hoặc lưu trữ trên máy chủ p2-repo.
Có ai biết các cách khác - có lẽ thuận tiện hơn/ít tốn kém hơn?

Xin hãy giúp tôi hiểu được thế giới khó hiểu của Tycho hơn một chút ...
Cảm ơn trước

+1

Câu hỏi này có quá nhiều kết thúc mở - bạn nên xem xét giới hạn nó cho một câu hỏi, ví dụ "làm thế nào để tham khảo Mockito với Tycho?" – oberlies

+0

Tôi đã thêm một câu trả lời cho một câu hỏi tương tự liệt kê cách thức mới và thanh lịch để tạo một kho lưu trữ Eclipse theo cách tự động và sạch sẽ thông qua 'p2-maven-plugin' - http://stackoverflow.com/a/24777560/464590 – berezovskyi

Trả lời

3

Nếu Mockito không có trong nền tảng mục tiêu của bạn (và bạn không có nó trong một kho lưu trữ p2) , điều dễ nhất để làm là có thể thêm lại sự phụ thuộc vào pom của bạn (mà không phải loại bỏ nhập khẩu mockito khỏi tệp kê khai của bạn).

Tôi nghĩ bạn cũng sẽ cần phải xác định sau trong pom, trong cấu hình cho plugin mục tiêu nền tảng cấu hình:

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>target-platform-configuration</artifactId> 
    <version>${tycho-version}</version> 
    <configuration> 
     <pomDependencies>consider</pomDependencies> 
    </configuration> 
    </plugin> 

Xem hướng dẫn trên adding a dependency on a pom-first artifact. (Tôi không chắc bạn có cần phải chỉ định trình giải quyết) hay không.

Về hỗ trợ cho các kho p2 trong Nexus, sự hiểu biết của tôi là plugin p2 cho Nexus đã kể từ khi được mã nguồn mở: