2012-11-07 15 views
11

W przeszłości mieliśmy pakiety i funkcje w systemie plików i udostępnialiśmy je w środowisku Eclipse za pośrednictwem docelowego pliku definicji z lokalizacją "Katalog". W ten sposób można było z nich łatwo korzystać za pomocą kreatorów eksportu w środowisku Eclipse.Jak używać katalogu zawierającego pakiety firm trzecich w kompilacji Tycho

Teraz próbuję zbudować eclipse-plugin z Tycho, który ma zależności od stron trzecich, np. javax.vecmath i org.apache.commons.math.

Z tego, co wiem, najlepszym sposobem uzyskania zależności w kompilacji Tycho jest repozytorium p2. Używam więc jednego dla pakietów Eclipse. Ale w przypadku pakietów firm trzecich wydaje się, że nie ma dostępnego repozytorium p2.

Moje pytanie brzmi: w jaki sposób mogę łatwo uzyskać pliki JAR (vecmath, commons-math) w repozytorium p2?

Pomyślałem, że mogę zbudować repozytorium p2 z Tycho, ale jak to zrobić, gdy nie mam dostępu do pakietów innych firm w Tycho? Próbowałem użyć definicji celu, ale Tycho obsługuje tylko linki do repozytoriów p2, a nie do katalogów czy instalacji. Czy istnieją inne sposoby korzystania z moich niezależnych zależności w kompilacji Maven/Tycho?

Odpowiedz

0

Zgodnie z Twoim pytaniem, zależności od innych podmiotów są już pakietami. To jest dobre – wszystko, co pozostało do zrobienia, to generowanie metadanych p2 dla pakietów.

Można to łatwo zrobić poprzez Features and Bundles Publisher application. Rezultatem jest repozytorium p2. Oczywiście, nie chcesz, aby wszyscy twoi programiści musieli to zrobić lokalnie, aby uruchomić kompilację Tycho, więc powinieneś umieścić wynik aplikacji wydawcy na serwerze sieciowym. Następnie odwołaj się do pakietów za pośrednictwem adresu URL http w docelowym pliku projektu.

+0

To był najprostszy i najszybszy sposób, aby utworzyć repozytorium p2. Dzięki wszystkim. – Timo

+4

Nie zgadzam się. Musisz ręcznie wygenerować witrynę, a jeśli słoiki nie są pakunkami, musisz je "pakować" samodzielnie. Wszystko to jest przyziemne, kłopotliwe i można je łatwo zautomatyzować za pomocą wtyczki p2-maven (wspomnianej poniżej). Jestem autorem wtyczki p2-maven i zakodowałem ją tylko dlatego, że używanie "aplikacji wydań funkcji i pakietów" było naprawdę uciążliwe. Wypróbuj p2-maven-plugin, a zobaczysz, że jest łatwiejszy niż cokolwiek innego: https://github.com/reficio/p2-maven-plugin –

+0

Tak, zgadzam się, że wtyczka p2-maven wygląda jak najlepsze rozwiązanie . Radzenie sobie z zależnościami stron trzecich w projektach Eclipse/RCP naprawdę jest takim bólem. Wygląda na to, że wtyczka p2-maven może znacznie zmniejszyć ten problem, po prostu utrzymując listę gdzieś i publikując aktualizację strony p2 z budowy CI, abyśmy mogli jej używać we wszystkich naszych kompilacjach tycho. – Kris

11

Kilka różnych opcji ...

P2 wtyczki

Zastosowanie p2-maven-plugin owinąć wszystkie zależności non-OSGi w wiązki i utworzyć repozytorium P2.

Nie próbowałem wtyczki p2-maven (nie istniało podczas konfigurowania mojego bieżącego projektu). Jego implementacja oparta jest na tycho, ale może się okazać, że zapewnia wygodniejszy sposób rozwiązania problemu niż same wtyczki tycho.

Bundle wtyczki

Zastosowanie maven-bundle-plugin do okład twoi zależności non-OSGi (jeden pom wrapper za uzależnienia) i zainstalować go w swoim repozytorium. Myślę, że commons-math jest już zależnością, więc możesz po prostu owinąć vecmath. Następnie można wymienić te zależności w <dependencies> swoich plików pom z tymio.

Takie podejście ma tę zaletę, że nie trzeba konfigurować repozytorium p2 tylko po to, aby zbudować swój projekt. Wadą jest to, że zarządzanie zależnościami w projektach pakietów nie jest już przypadkiem tylko modyfikowania pliku MANIFEST.MF: może być również konieczna aktualizacja pom.

Bundle wtyczki i Tycho

Jeśli używasz wtyczki podejście Bundle do pakowania swoich zależności do wiązek OSGi, może nadal być przydatne do utworzenia repozytorium P2 dla tych zależnościach i tak, jak Upraszcza konfigurowanie platformy docelowej w Eclipse PDE.

Aby to zrobić, możesz utworzyć nowy projekt oparty na tycho, aby zebrać zależności do repozytorium p2: czyli zależności, które są już pakietami, wraz z opakowanymi wersjami zależności niezależnych od OSGi.W ten sposób projekt, który tworzy repozytorium p2, zawiera listę zawijanych zależności w swoim pom, a projekty twojego pakietu mogą zużywać repozytorium p2 bez wykazywania zależności w ich poms.

Jest to podejście, którego używam. W szczególności używam projektu eclipse-feature do zdefiniowania funkcji base, która obejmuje wszystkie zależności od innych firm. Mam również opcję konfiguracyjną <deployableFeature> w pakiecie wtyczek ustawionym na true, który utworzy repozytorium p2 w katalogu docelowym. Ta funkcja może zostać zainstalowana w mojej zwykłej instancji Eclipse, co ułatwia korzystanie z obecnej platformy Eclipse jako platformy docelowej. Może być również używany jako repozytorium p2, które może być użyte w innym miejscu w kompilacji tycho (tj. Według mojego kodu) lub jako repozytorium w pliku Eclipse .target.

Model eclipse-feature wydawał się być najlepszym typem opakowania w Tycho 0.13.0. W nowszych wersjach może istnieć bardziej odpowiedni rodzaj opakowania.

+0

Ta odpowiedź raczej odpowiada na to pytanie: http://stackoverflow.com/q/29664505/1523648 – oberlies

1

dobrym miejscem do szukania 3rd party słoików wiązek w repo P2 Eclipse orbicie

http://download.eclipse.org/tools/orbit/downloads/

commons.math tam jest.

Jeśli 3rd party OSGi pakiet nie jest dostępny w repo p2, ale w repo maven takich jak

http://search.maven.org/

można wykorzystać pomDependency Tycho = rozważyć przełącznik:

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

+0

Znalazłem orbitę już kilka minut temu, to naprawdę wygodne. Druga rada wygląda interesująco, dzięki. – Timo