Pobierz źródłowe pliki jar dołączone do Eclipse dla zależności zarządzanych przez Maven


176

Używam Maven (i Maven Eclipse Integration) do zarządzania zależnościami dla moich projektów Java w Eclipse. Funkcja automatycznego pobierania plików JAR z repozytoriów Maven to oszczędność czasu rzeczywistego. Niestety nie zawiera dokumentacji API i kodu źródłowego.

Jak skonfigurować Mavena, aby automatycznie pobierał również załączniki źródłowe i javadoc oraz poprawnie je rejestrował w Eclipse?


Powiązane pytanie z pytaniem, jak zawsze pobierać źródła i javadoc podczas korzystania z maven: stackoverflow.com/questions/5780758/…
Flow

Odpowiedzi:


226

Jestem pewien, że wtyczka m2eclipse Maven do Eclipse - odwrotnie - może to zrobić. Możesz go skonfigurować tak, aby automatycznie pobierał zarówno pliki źródłowe, jak i javadoc.

Można to osiągnąć, przechodząc do opcji Okno> Preferencje> Maven i zaznaczając opcje „Pobierz źródła artefaktów” i „Pobierz artefakt JavaDoc”.

Zrzut ekranu preferencji Maven


Tak, właśnie zacząłem używać m2eclipse i zajmuje się tym (i wieloma innymi rzeczami).
Thilo

44
Żadna z tych odpowiedzi nie jest odpowiedzią. Dlaczego są wybierani? Mogłem pobrać źródła, klikając projekt w widoku Nawigatora z naciśniętym klawiszem Control i wybierając „m2 Maven” -> „Źródła pobierania”. Następnie mogłem kliknąć klasę z naciśniętym klawiszem Command (Mac), aby przejść do połączonego źródła.
Alex Worden

8
Wygląda na to, że jeśli skompilowany plik JAR został już pobrany, Eclipse nie spróbuje natychmiast pobrać źródłowego / Javadoc JAR. Wygląda na to, że modyfikowanie POM zawierającego zależność od POM, dla których chcę, aby źródło / Javadoc w Eclipse i zapisanie POM, pobierało źródło / Javadoc dla zależności, nawet jeśli skompilowany JAR jest już w pamięci podręcznej repozytorium Mavena.
Francis Gagné,

13
@Francis - Po dokonaniu powyższej zmiany kliknij prawym przyciskiem myszy swój projekt i wybierz "Maven> Update Project ..." Spowoduje to pobranie plików źródłowych.
carbontax

3
Zamiast pobierać źródła dla wszystkich zależności, czy można pobrać tylko dla niektórych zależności, określając je w pom wraz z samą zależnością, czy może b za pomocą jakiegoś wewnętrznego tagu w tagu zależności lub czegoś podobnego?
nanosoft

127
mvn eclipse:eclipse -DdownloadSources=true

lub

mvn eclipse:eclipse -DdownloadJavadocs=true

lub możesz dodać obie flagi, jak wskazuje Spencer K.

Dodatkowo =trueporcja nie jest wymagana, więc możesz użyć

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

8
lub oba! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Działa to tylko wtedy, gdy źródło i javadocs zostały dostarczone do repozytorium, z którego pobierasz. Czasami nie są dostarczane jak wiosna.
Spencer Kormos

2
Teraz dostarcza ich wiosna.
Robin Green,

Zauważ, że ta odpowiedź ma więcej niż 10 lat. Użyj wtyczki m2e w eclipse, zamiast zmuszać maven do tworzenia plików konfiguracyjnych eclipse.
Thorbjørn Ravn Andersen

71

Inne odpowiedzi w tej pracy, ale jeśli chcesz uniknąć konieczności zapamiętywania argumentów wiersza poleceń, możesz również po prostu dodać do downloadSources i downloadJavadocs config do sekcji maven-eclipse-plugin w swoim pom.xml:

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

czy byłbym w stanie ustawić to na poziomie zależności?
marcorossi

@marcorossi Przepraszamy, nie jestem pewien, czy to możliwe.
przemyślenie

Nie jestem przekonany, że to właściwe. Z pewnością ustawienia źródła i pobierania Javadoc są preferencjami użytkownika, a nie problemem na poziomie projektu? Zobacz moją odpowiedź poniżej, jak umieścić to w settings.xmlpliku.
Duncan Jones

Otrzymałem ostrzeżenie: [OSTRZEŻENIE] „build.plugins.plugin.version” dla org.apache.maven.plugins: brak wtyczki maven-eclipse. Aby to naprawić, możesz dodać coś takiego poniżej <artifactId>: <version> 2.9 </version>
Christiaan

16

Wolę nie umieszczać ustawień pobierania źródła / Javadoc w pom.xmlpliku projektu , ponieważ uważam, że są to preferencje użytkownika, a nie właściwości projektu. Zamiast tego umieszczam je w profilu w moim settings.xmlpliku:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <profiles>
    <profile>
      <id>sources-and-javadocs</id>
      <properties>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>true</downloadJavadocs>
      </properties>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>sources-and-javadocs</activeProfile>
  </activeProfiles>
</settings>

1
Skopiowałem ten plik settings.xml w .m2, ale źródła i javadocs nie są kopiowane. Poniższe polecenie jawnie w interfejsie CLI przenosi jednak źródła i javadoc: zależność mvn: zależność źródeł: rozwiązywanie -Dclassifier = javadoc Jakieś myśli?
Arun Gupta

Może to działa, ale proszę wyjaśnić, w jaki sposób wtyczka maven eclipse ma znaleźć te ustawienia konfiguracyjne? Myślisz, że szuka globalnych nieruchomości?
chrisinmtown

9

Kliknij prawym przyciskiem myszy projekt -> maven -> źródła pobierania


3
Wszyscy mówili, jak to włączyć, a nie jak zmusić mavena do pobierania źródeł! po włączeniu opcji
Chad

8

Jeśli słoiki źródłowe znajdują się w repozytorium lokalnym i używasz obsługi maven Eclipses, źródła są automatycznie dołączane. Możesz uruchomić, mvn dependency:sourcesaby pobrać wszystkie pliki JAR ze źródłami dla danego projektu. Nie wiem jednak, jak zrobić to samo z dokumentacją.


To zadziałało dla mnie. Po uruchomieniu mvn dependency:sourcesmogłem kliknąć w Eclipse, aby odczytać źródło. Nie jest wymagane dodatkowe mycie za pomocą m2e. Aby pobrać javadocs, które robisz mvn dependency:sources -Dclassifier=javadoc.
Mat Gessel

4

Jeśli używasz meclipse, zrób

okno -> maven -> Pobierz źródła artefaktów (zaznacz zaznacz)

(Jeśli nadal otrzymujesz okno załączania źródła, kliknij przycisk dołączania pliku i zamknij okno załączania źródła. Następnym razem, gdy spróbujesz zobaczyć źródło, otworzy się poprawne źródło)

Surajz



3

Próbowałem windows-> pref ..-> Maven Ale to nie wyszło. Dlatego utworzyłem nową ścieżkę klas za pomocą polecenia mvn eclipse: eclipse -DdownloadSources = true i raz odświeżyłem obszar roboczy. voila .. Źródła zostały załączone.

Wpis źródła jar jest dostępny w ścieżce klasy. Dlatego nowa wersja rozwiązała problem ...


Dzięki twojemu rozwiązaniu mogę wybrać i wybrać moduł, dla którego chcę uzyskać źródła. Po prostu cd do tego modułu i skompiluj za pomocą "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Dzięki :)
vishwarajanand

2

w mojej wersji Eclipse helios z m2Eclipse nie ma

window --> maven --> Download Artifact Sources (select check)

Pod oknem jest tylko „nowe okno”, „nowy edytor” „otwarta perspektywa” itd.

Jeśli klikniesz prawym przyciskiem myszy na swoim projekcie, wybierz maven -> źródła pobierania

Nic się nie dzieje. żadne źródła nie są pobierane, żadne pliki pom nie są aktualizowane, nie pojawia się okno z pytaniem, które źródła.

Wykonywanie mvn xxx poza eclipse jest niebezpieczne - niektóre polecenia nie działają z m2ecilpse - zrobiłem to raz i straciłem cały projekt, musiałem przeinstalować eclipse i zacząć od zera.

Nadal szukam sposobu, aby ecilpse i maven znaleźć i używać źródła zewnętrznych plików jar, takich jak servlet-api.


2

Zmiana pom dla maven-eclipse-plugin tak, aby zawierała source / javadoc, wystarczy zastosować dla nowych zależności dodawanych do pom. Jeśli musimy ubiegać się o istniejące zależności, musimy uruchomić zależność mvn: sources. Sprawdziłem to.


2

Sprawdzanie źródła pobierania / javadoc w preferencjach Eclipse-Maven czasami nie wystarcza. W przypadku, gdy maven z jakiegoś powodu nie mógł ich pobrać (awaria sieci?), Maven tworzy jakieś pliki * .lastUpdated, po czym nigdy nie pobierze ich ponownie. Moim rozwiązaniem empirycznym było usunięcie katalogu artefaktów z .m2 / repozytorium i ponowne uruchomienie obszaru roboczego eclipse ze sprawdzonym źródłem pobierania / javadoc i sprawdzeniem aktualizacji projektów przy starcie. Po ponownym uruchomieniu obszaru roboczego, być może niektóre projekty mogą zostać oznaczone jako błędne, podczas gdy postęp zaćmienia jest pobierany, każdy błąd zostanie usunięty. Może ta procedura nie jest aż tak „naukowa”, ale mi się udało.


1

Dodałem konfigurację pom do wtyczki maven-eclipse w celu pobrania źródła i javadoców, ale myślę / mam nadzieję, że stanie się to dla nowych zależności, a nie istniejących.

W przypadku istniejących zależności przejrzałem w eksploratorze pakietów do „Zależności Mavena” i kliknąłem prawym przyciskiem myszy na plik commons-lang-2.5.jar, wybrano Maven | Pobierz źródła i ... nic się nie wydarzyło (brak paska postępu lub wskazanie, że coś robi). Jednak udało mi się pobrać, ponieważ jestem teraz w stanie przeskoczyć do źródła we wspólnym języku.


1

overthink zasugerował użycie konfiguracji w pom:

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

Najpierw pomyślałem, że to nadal nie będzie dołączać javadoc i źródeł (jak wcześniej bezskutecznie próbowałem z tą opcją -DdownloadSources).

Ale niespodzianka - plik .classpath JEST pobiera źródła i dołącza javadoc podczas korzystania z wariantu POM!


1

W przypadku Indigo (i prawdopodobnie Heliosa) powyższe pola wyboru znajdują się tutaj:

Okno -> Preferencje -> Maven


0

Miałem podobny problem, a rozwiązaniem, które działało najlepiej, było umieszczenie źródła w tym samym pliku jar co skompilowany kod (więc dany katalog w jar zawierałby oba Foo.javai Foo.class). Eclipse automatycznie kojarzy źródło ze skompilowanym kodem i automatycznie dostarcza JavaDoc ze źródła. Oczywiście jest to przydatne tylko wtedy, gdy kontrolujesz artefakt.


0

Po ustawieniu właściwości na poziomie projektu lub właściwości użytkownika, wykonaj Maven -> Aktualizuj projekt (wymuś aktualizację). Pobiera źródła

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.