2011-09-04 16 views
7

Obecnie próbuję uzyskać moją kompilację (~ 30 pakietów) wykonanych przez tycho.
Podczas testów jednostkowych natknąłem się na pewne niejasne problemy podczas korzystania z Mockito.
Utworzono projekt eclipse-test-plugin jako fragment projektu do przetestowanego pakietu. Ponieważ Theseo powinien rozwiązać wymagane pakiety za pomocą manifestu, usunęłem zależność do mockito z pom.xml.
Gdy następnie spróbuję dodać mockito do wymaganych pakietów w manifeście mockito, nie ma na liście. Znalazłem this post i utworzyłem docelową platformę wskazującą na zaćmienie indygo.
Zawarłem specyfikację platformy, więc nie potrzebuję pakietu Delta Eclipse. Wtedy pojawia się pierwsza dziwna rzecz. Eclipse mówi mi, że istnieją pewne niezadowalające zależności, a kiedy ustawię nowo utworzoną platformę docelową jako aktywną w ramach środowiska Eclipse, żadne pakiety, takie jak org.osgi.framework itd., Nie mogą zostać usunięte przez środowisko Eclipse. Ale kiedy buduję eclipse-product używając tycho i docelowej platformy, to działa.Jak odwołać się do mockito w ramach tycho?

My target-platform

Jeżeli ustawić bieżącą instalację Zaćmienie jako aktywnej platformy wiązki są rozwiązane. Wybrałem następujące uwalniania indygo

  • Eclipse RCP Plug-in Zasoby Wywoływacz Components
  • Equinox docelowe Komponenty
  • Jetty docelowe

Tak więc moje pierwsze pytanie jest „Co jest źle z moją platformą docelową, dzięki czemu teno jest w stanie z niej korzystać, ale zaćmienie nie jest? "

Aby zbliżyć się do mojego pierwotnego problemu (uruchomienie mockito) Ustawiam obecną instalację zaćmienia jako aktywną platformę docelową. Eclipse może następnie rozwiązać pakiet org.osgi.framework i inne.
Dodałem wtedy poprzednio usuniętą zależność do mockito ponownie do mojego pom.xml, jak we wspomnianym powyżej poście. Ale nadal nie mogę znaleźć mockito, gdy próbuję dodać go do wymaganych pakietów w manifeście.

Moje drugie pytanie brzmi: "Co robię źle? W jaki sposób odwołujesz się do pakietów, które nie są publikowane w witrynie aktualizacji środowiska Eclipse, np. Maven centralne repozytorium?"

Aktualizacja: W trakcie moich badań znalazłem dwa sposoby, w tym wiązek z non-P2-update-stron w moim docelowej platformy:

  1. Nexus Pro
    Profesjonalny wersja Nexusa obsługuje repozytoria p2-Proxy, które mogą łączyć domyślne repozytorium maven, takie jak centralne repozytorium Maven, w stronę aktualizacji p2, ale wersja profesjonalna kosztuje około 800 USD rocznie.
  2. Załóż Eclipse repozytorium
    Można utworzyć nowy projekt maven z opakowaniemeclipse-repositorytym wszystkich żądanych wiązkach. Utworzony artefakt jest następnie wdrażany na wspólnym serwerze sieciowym.

Na swojej platformie docelowej możesz następnie odwołać się do repozytorium p2-proxy Nexusa lub do repozytorium P2P dostępnego w sieci.
Czy ktoś wie, inne sposoby - prawdopodobnie bardziej wygodne/tańsze?

Proszę mi pomóc zrozumieć mylące świat Tycho nieco więcej ...
góry dzięki

+1

To pytanie ma zbyt wiele otwartych końców - powinieneś rozważyć ograniczenie go do jednego pytania, np "jak odwołać się do Mockito z Tycho?" – oberlies

+0

Dodałem odpowiedź na podobne pytanie z listą nowych i eleganckich sposobów tworzenia repozytorium Eclipse w wysoce zautomatyzowany i czysty sposób za pomocą 'p2-maven-plugin' - http://stackoverflow.com/a/24777560/464590 – berezovskyi

Odpowiedz

3

Jeśli Mockito nie jest w danej platformy docelowej (i nie trzeba go w repozytorium P2) , najprostszą rzeczą do zrobienia jest prawdopodobnie ponowne dodanie zależności z powrotem do twojego pom (bez usuwania importu mockito z twojego manifestu).

Chyba będziesz musiał określić następujące parametry w POM w konfiguracji dla wtyczki docelowego platformy konfiguracji:

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

Patrz instrukcje na adding a dependency on a pom-first artifact. (Nie jestem pewien, czy musisz określić resolver).

chodzi o wsparcie dla repozytoriów P2 Nexus, moje zrozumienie jest, że plugin p2 dla Nexus od tego czasu pochodzą otwartym:

Powiązane problemy