Czy ktoś ma pomysł, czy można znaleźć źródłowe pliki JAR w repozytoriach Maven?
Czy ktoś ma pomysł, czy można znaleźć źródłowe pliki JAR w repozytoriach Maven?
Odpowiedzi:
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
mvn dependency:resolve -Dclassifier=javadoc
IntelliJ IDEA automatycznie zauważa javadocs, co jest bardzo miłe.
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>
mvn eclipse:eclipse
jeśli dodasz to do pliku POM?
M2_REPO
jako 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
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ą
finalName
plus „-sources”, jeśli jest to główne źródło. W przeciwnym razie byłoby tofinalName
„-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 .
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
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
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.
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”
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
W Eclipse
pom.xml
Run As
-> Maven generate-sources
Warunek wstępny:
Maven powinien być skonfigurowany z Eclipse.
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 Javadoc
lokalną instalację dokumentu. Następnie możesz kliknąć kontekstowo jakiś kod w edytorze i wybrać widok JavaDoc.
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 .
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ę!
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.
Repozytoria Maven zapewniają prosty sposób pobierania słoika źródeł.
Wyjaśnię to za pomocą demonstracji „Spring-boot-aktuator-autoconfigure”.
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
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.