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

Alain O'Dea
źródło
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>
RobAu
źródło
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 .

Pascal Thivent
źródło
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
dev_doctor
źródło
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
Anver Sadhat
źródło
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.

Maddin
źródło
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”

Stefan De Boey
źródło
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

Gabriel Ramirez
źródło
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.

bondkn
źródło
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.

Witold Kaczurba
źródło
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)”

Bozho
źródło
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

Basil Bourque
źródło
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 .

eebbesen
źródło
2

Jeśli znasz groupId i aritifactId , możesz wygenerować adres URL pobierania w ten sposób.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback-classic/

a dostaniesz taką stronę, wybierz potrzebną wersję, po prostu ciesz się! wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

senninha
źródło
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.

eeezyy
źródło
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.

atom88
źródło
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

Manojkumar Khotele
źródło
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

Saikat
źródło
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.

Naresh Muthyala
źródło