2012-10-20 16 views
5

Zauważyłem, że wiele projektów umieszcza słoik org.jdt.core w lib folder, ponieważ nie jest dostępny w repozytorium maven. sbt, narzędzie do kompilacji, którego używam, może pobrać zależność prosto z adresu URL. Jednak nie mogę znaleźć żadnych bezpośrednich linków do słoika na stronie pobierania Zaćmienie. Zamknięcia, które mogę znaleźć, to link do całego jdt zip, który zawiera wiele plików JAR. Nie sądzę, sbt można wyodrębnić jar z zależności zip. Czy istnieje bezpośredni link lub inne obejście tego problemu?Czy istnieje bezpośredni odsyłacz do słoika eclipse.jdt.core?

Odpowiedz

14

Zależy od tego, czy żądana wersja znajduje się już w repozytorium, czy nie.

Dla org.eclipse.jdt.core:

Projekt tycho wydaje się wdrożyć pewne wersje org.eclipse.jdt.core do Centrali. Zobacz:

http://central.maven.org/maven2/org/eclipse/tycho/org.eclipse.jdt.core/ 

Okazało się, że za pomocą search.maven.org. Jeden z nich może być wystarczająco dobry dla twoich potrzeb. Ale nie wydają się mieć "oficjalnych" plików binarnych, tylko je przebudowują.

(Należy pamiętać, że istnieje również maven.eclipse.org, co może być przydatne dla niektórych artefaktów Ale jeśli nie wydaje się mieć coś do własnych konkretnego problemu.).

W ogólnym przypadku:

Ogólnie rzecz biorąc, chociaż nie można znaleźć wszystkich artefaktów zaćmienia w repozytoriach maven. Jeśli nie możesz znaleźć tego, czego chcesz w repozytorium maven, musisz znaleźć je w repozytoriach Eclipse p2. Powiedzmy, że chcesz org.eclipse.jdt.core dla Eclipse 3.8.1 ...

Eclipse Project Update Sites strona wiki mówi witryny aktualizacji do 3.8.x jest

http://download.eclipse.org/eclipse/updates/3.8 

To rzeczywiście „kompozytowe” repozytorium p2 do 3,8, 3.8.1 , ... Następnie musimy znaleźć nazwę repozytorium 3.8.1. Poniższa pobiera plik słoik zawierający compositeArtifacts.xml, który wymienia repozytoriów dziecko i greps dla 3.8.1:

curl -s http://download.eclipse.org/eclipse/updates/3.8/compositeArtifacts.jar | \ 
    gunzip -c | \ 
    grep '3\.8\.1' 

wynik?

<child location='R-3.8.1-201209141540'/> 

Ta lokalizacja jest ścieżką względną. Informuje nas, że repozytorium 3.8.1 ma numer

http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/ 

Teraz pobierz indeks artefaktu dla tego repozytorium. Ponownie, pojedynczy plik XML w słoiku. Ale tym razem nie jest to kompozyt repozytorium, więc po prostu poprosić o artifacts.jar:

curl -s http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/artifacts.jar | \ 
    gunzip -c | \ 
    grep org.eclipse.jdt.core[\'\"] | \ 
    sort -u 

Wynik:

<artifact classifier='osgi.bundle' id='org.eclipse.jdt.core' version='3.8.2.v20120814-155456'> 

(nie jestem pewien, dlaczego org.eclipse.jdt.core w wersji 3.8.1 ma zaczynając 3.8 .2, ale tak to już jest.Wciśnijmy ...)

Teraz możemy połączyć ze sobą adres URL zgodnie z elementem <mappings> w pobranym pliku artefacts.xml. Dodaj 'plugins /' do ścieżki do repozytorium; dodać wersję nazwy wtyczki, a następnie możemy go pobrać:

curl -Os http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/plugins/org.eclipse.jdt.core_3.8.2.v20120814-155456.jar 

Jeśli znajdziesz się potrzebuje więcej niż tylko jeden lub dwa słoiki, można zajrzeć do korzystania Tycho, lub Eclipse p2 Ant tasks rozwiązać artefakty ty potrzebujesz do folderu lib zanim uruchomisz swoją kompilację sbt.

+0

Odpowiedź Dynamite, dzięki. Renowacja tycho maven jest dla mnie wystarczająco dobra, ponieważ ma 3.8.x, którego nie mogłem znaleźć, reszta to wisienka! –

+0

To była świetna odpowiedź. Dziękuję Ci! – awied

Powiązane problemy