Pobierz źródłowe pliki JAR z repozytorium Maven


Odpowiedzi:


785

Maven Micro-Tip: Uzyskaj źródła i Javadocs

Kiedy korzystasz z Maven w IDE, często potrzebujesz IDE do rozwiązania kodu źródłowego i Javadocs w zależności od bibliotek. Jest łatwy sposób na osiągnięcie tego celu.

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

Pierwsze polecenie spróbuje pobrać kod źródłowy dla każdej zależności w pliku pom.

Drugie polecenie spróbuje pobrać Javadocs.

Maven jest na łasce pakujących bibliotek. Więc niektóre z nich nie będą miały spakowanego kodu źródłowego, a wiele z nich nie będzie miało Javadocs.

Jeśli masz wiele zależności, dobrym pomysłem może być również włączenie / wykluczenie w celu uzyskania określonych artefaktów, następujące polecenie na przykład pobierze tylko źródła zależności o określonym artefakcie:

mvn dependency:sources -DincludeArtifactIds=guava

Źródło: http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/

Dokumentacja: https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html


10
Gdzie je umieszcza po pobraniu?
James Moore

15
Umieszcza je w tym samym katalogu, co binarne pliki JAR w M2_HOME.
Alain O'Dea,

19
Jeśli korzystasz z Eclipse, pomocne może być także wykonanie później „mvn eclipse: eclipse”, a następnie odświeżenie projektu w Eclipse - oszczędza to ręcznego dołączania źródeł do każdego pliku.
unigeek

1
Nie mogę znaleźć źródeł i javadocs po ich pobraniu. Sprawdziłem każdy katalog pod M2_HOME
Patrick Kiernan

2
Po mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA automatycznie zauważa javadocs, co jest bardzo miłe.
Jonik

89

Konfigurowanie i uruchamianie wtyczki maven-eclipse (na przykład z wiersza poleceń mvn eclipse:eclipse)

   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
        </plugins>
    </build>

Co masz na myśli? Czy masz na myśli to, że źródła i dokumenty są pobierane po uruchomieniu, mvn eclipse:eclipsejeśli dodasz to do pliku POM?
Lii

3
Tak. Proste.
RobAu,

@RobAu, gdzie zostanie pobrane źródło, czy zostanie ono dołączone do projektu samodzielnie, czy gdzieś indziej?
Jaskey,

1
Zostanie pobrany jako słoik na twój M2_REPOjako xxxx-yy-sources.jar, w tej samej lokalizacji, co zwykły słoik. Zostanie dołączony jako kod źródłowy słoika xxxx-yy w bibliotekach
RobAu,

1
@KanagaveluSugumar musisz dodać M2_REPO do zaćmienia, a następnie po prostu odświeżyć projekt.
RobAu

36

Jeśli projekt utworzy jar źródeł projektu i wdroży go do repozytorium maven, znajdziesz go :)

Po prostu FYI, artefakty źródłowe są generalnie tworzone przez wtyczkę maven-source . Ta wtyczka może łączyć główne lub testowe źródła projektu w archiwum jar i, jak wyjaśniono w Konfigurowanie wtyczki źródłowej :

(...) Wygenerowany plik jar zostanie nazwany wartością finalNameplus „-sources”, jeśli jest to główne źródło. W przeciwnym razie byłoby to finalName„-test-sources”, jeśli jest to źródło testowe.

Dodatkowy tekst podano w celu opisania artefaktu (tutaj „-sources” lub „-test-sources”) nazywa się klasyfikatorem.

Aby zadeklarować zależność od artefaktu korzystającego z klasyfikatora, wystarczy dodać <classifier>element. Na przykład:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <classifier>sources</classifier>
</dependency>

Zauważ, że generalnie tego nie robisz, większość IDE zapewnia obsługę źródeł pobierania (i / lub JavaDoc) z głównego artefaktu bez wyraźnego zadeklarowania zależności od nich.

Na koniec zauważ również, że niektóre wyszukiwarki repozytoriów pozwalają na wyszukiwanie artefaktów za pomocą klasyfikatora (przynajmniej Nexus robi to z wyszukiwaniem zaawansowanym). Zobacz na przykład to wyszukiwanie .


18

Maven plugin pomysł na IntelliJ Idea pozwala określić, czy źródła i java doc powinien zostać rozwiązany i pobranych

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true

Czy zamiast pobierać źródła dla wszystkich zależności, czy można pobierać tylko niektóre zależności, określając je w pom wraz z samą zależnością, może b poprzez jakiś wewnętrzny znacznik w tagu zależności lub coś podobnego?
nanosoft,

Ta wtyczka została
wycofana

18

Aby pobrać określone źródło lub javadoc , musimy dołączyć GroupIds - Jest to wartość oddzielona przecinkami, jak pokazano poniżej

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=sources

Zauważ, że klasyfikator nie jest oddzielony przecinkami, aby pobrać javadoc, musimy ponownie uruchomić powyższą komendę z klasyfikatorem jako javadoc

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc

Czy zamiast pobierać źródła dla wszystkich zależności, czy można pobierać tylko niektóre zależności, określając je w pom wraz z samą zależnością, może b poprzez jakiś wewnętrzny znacznik w tagu zależności lub coś podobnego?
nanosoft,

14

Aby pobrać dowolne użycie artefaktu

mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier

Dla źródeł Groovy byłoby to

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:sources

Do javadoka Groovy'ego użyłbyś

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:javadoc

To umieszcza dany artefakt w lokalnym repozytorium Maven, tj. Zwykle $HOME/.m2/repository . .

dependency:sources po prostu pobiera źródła zależności projektu, a nie źródła wtyczek ani źródła zależności zdefiniowane w wtyczkach.


12

informacje można znaleźć w tym powiązanym pytaniu: Pobierz źródłowe pliki jar dołączone do Eclipse dla zależności zarządzanych przez Maven,
jeśli używasz wtyczki eclipse maven, a następnie użyj „mvn eclipse: eclipse -DdownloadSources = true”


To jedyne rozwiązanie, które działało dla mnie. Używam Eclipse Kepler. Ponieważ tworzy to odpowiednie odwołania w .classpath . Jak poniżej:
aspdeepak

<classpathentry kind = "var" path = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / messages / jedis / 2.6.0 / jedis-2.6.0 -sources.jar ">
aspdeepak

Kiedy podążyłem za odpowiedzią @ RobAu, tylko pliki Hibernacji są pobierane z repozytorium, a nie Spring . Następnie odwiedzam link, który podałeś i śledziłem @ mrembisz, wprowadzam zmiany w preferencjach Mavena i działa jak urok. Dostaję Spring Docs . @Stefan De Boey Dzięki za udostępnienie tego. +1.
OO7

9

jeśli używasz Eclipse, możesz także otworzyć Preferencje> Maven i wybrać Pobierz źródła artefaktów, to pomogłoby zachować pom.xml nienaruszone i zachować twoje źródła lub dokumenty java (jeśli zaznaczone) tylko do programowania bezpośrednio w miejscu twojego komputera ~ / .m2


7

W Eclipse

  1. Kliknij prawym przyciskiem myszy pom.xml
  2. Wybierz Run As-> Maven generate-sources
    domyślnie wygeneruje źródło w folderze .m2

Warunek wstępny:

Maven powinien być skonfigurowany z Eclipse.


1
Odpowiada na inne pytanie. To pytanie dotyczy pobierania źródłowych plików JAR, które ich nie generują.
Stephen C

5

W Eclipse - kliknij projekt, a następnie:

wprowadź opis zdjęcia tutaj.


Odznałem opcję „pobieraj źródła artefaktów” przy ustawieniu zaćmienia zaćmienia, więc pobiera tylko słoik. Ale później próbowałem użyć tego rozwiązania do pobrania źródła, nie udało się to bez żadnej wiadomości. Usunąłem folder jar w lokalnym repozytorium maven i ponownie pobrałem jar, a następnie powiodło się pobieranie jar jar. Myślę, że dzieje się tak, ponieważ lokalne repozytorium maven ma słoik, więc nie mogę użyć tej metody do pobrania źródła.
szczery

4

Możesz, jeśli są przesłane. Zasadniczo nazywane są one „frameworkname-version-source (s)”


4

NetBeans, kliknięcie kontekstowe

W NetBeans 8 z projektem opartym na Maven wystarczy kliknąć kontekstowo element listy plików jar zależności, którą jesteś zainteresowany. WybieraćDownload Sources . Poczekaj chwilę, a NetBeans automatycznie pobierze i zainstaluje kod źródłowy, jeśli jest dostępny.

Podobnie możesz wybrać Download Javadoclokalną instalację dokumentu. Następnie możesz kliknąć kontekstowo jakiś kod w edytorze i wybrać widok JavaDoc.

zrzut ekranu z menu kontekstowego „Źródła pobierania” wybranego w projekcie NetBeans 8 prowadzonym przez Maven


3

Na podstawie oglądania konsoli Maven w Eclipse (Kepler) źródła zostaną automatycznie pobrane dla zależności Maven, jeśli spróbujesz otworzyć klasę ze wspomnianej zależności Maven w edytorze, dla którego nie masz już pobranych źródeł. Jest to przydatne, gdy nie chcesz pobierać źródła dla wszystkich swoich zależności, ale nie wiesz, które z nich chcesz wcześniej (i używasz Eclipse).

Skończyło się na użyciu podejścia @ GabrielRamierez , ale w przyszłości zastosuję podejście @ PascalThivent .



1

Użyłem również wtyczki Eclipse, aby wprowadzić projekt do przestrzeni roboczej Eclipse. Ponieważ pracowałem nad innym projektem, zauważyłem, że można pracować z Eclipse, ale bez wtyczki maven-eclipse. To sprawia, że ​​jest łatwiejszy w użyciu w różnych środowiskach i umożliwia łatwe użycie maven zamiast zaćmienia. I to bez zmiany pliku pom.xml.

Dlatego zalecam podejście Gabriela Ramireza.


0

Do debugowania można również użyć „dekompilatora Java”, takiego jak: JAD i dekompilować źródło w locie (chociaż wygenerowane źródło nigdy nie jest takie samo jak oryginał). Następnie zainstaluj JAD jako wtyczkę w Eclipse lub w swoim ulubionym IDE.


0

Repozytoria Maven zapewniają prosty sposób pobierania słoika źródeł.

Wyjaśnię to za pomocą demonstracji „Spring-boot-aktuator-autoconfigure”.

  1. Przejdź do repozytorium maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. Strona zawiera różne wersje. Kliknij na żądany, powiedzmy, 2.1.6. ZWOLNIENIE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. Strona ma link „Wyświetl wszystko” obok „Pliki”. Kliknij go - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. Strona zawiera listę różnych plików, w tym jeden dla źródeł - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-sources.jar

W przeciwnym razie zawsze możesz „sklonować” repozytorium z github, jeśli jest ono dostępne i uzyskać określony kod.

Jak wyjaśnili inni, możesz użyć polecenia „zależność mvn: sources”, aby uzyskać jar i generowanie źródeł dla używanej zależności.

Uwaga: Niektóre zależności nie będą miały pliku sources.jar, ponieważ nie zawierają one kodu źródłowego, ale plik pom. np. sprężyna rozruchowa-urządzenie uruchamiające . Jak w tym przypadku:

Startowe POM to zestaw wygodnych deskryptorów zależności, które można dołączyć do aplikacji. Uzyskujesz kompleksową obsługę wszystkich narzędzi Spring i powiązanych technologii, których potrzebujesz, bez konieczności przeszukiwania przykładowego kodu i kopiowania mnóstwa deskryptorów zależności.

Odniesienia: Wprowadzenie do Spring Boot Starters


0

W IntelliJ IDEA możesz automatycznie pobierać źródła artefaktów podczas importowania, włączając opcję Automatycznie pobieraj źródła:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

wprowadź opis zdjęcia tutaj


0

Jeśli chcesz ręcznie znaleźć źródłowy plik jar dla dowolnego artefaktu, przejdź do lokalizacji repozytorium maven dla konkretnego artefaktu, a następnie w folderze Pliki kliknij „zobacz wszystko”. Możesz znaleźć źródłowy plik jar.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.