2012-04-14 52 views
35

Idealnie, chcielibyśmy dodać zadanie pobierania wszystkich słoików źródłowych dla pierwszego poziomu i przejściowych zależności naszego projektu. Czy jest jakiś sposób na zrobienie tego?jak powiedzieć gradle, aby pobrać wszystkie słoiki źródłowe

Jeśli nie, czy istnieje opcja wiersza poleceń do dostarczania jak maven, aby wszystkie źródła zostały pobrane na nasze maszyny?

Wygląda na to, że powinno to być domyślne, przynajmniej w przypadku zależności pierwszego poziomu, ponieważ daje to javadoc w czasie zaćmienia, co jest bardzo przyjemne podczas wykonywania uzupełnień kodu.

+0

:) Chciałam tylko zwrócić Twoją uwagę na [tę sekcję] (http://stackoverflow.com/faq#signatures) FAQ w odniesieniu do używania podpisów; Twoje pytania i odpowiedzi dotyczące StackOverflow są już "podpisane" za pomocą Twojej karty użytkownika, więc podpisy nie są potrzebne. – simont

+1

cóż, to po prostu jest do bani ... podpis jest czymś, co pojawia się w twoim poście, a nie czymś, co musisz kliknąć, żeby dostać się do ... wskaźnik odczytywania podpisu idzie w dół z powodu bariery tego link (w rzeczywistości, prawdopodobnie spada o 90% lub więcej :(co jest bardzo niefortunne, ponieważ stackoverflow może pomóc wielu ludziom z REALnymi podpisami). –

+0

Zobacz tę odpowiedź, jeśli używasz opakowania Gradle: https: // stackoverflow .com/a/46596203/924597 – Shorn

Odpowiedz

22

Jeśli używasz Eclipse i chcesz nawigować w nim kod źródłowy swoich zależności, to wtyczka Eclipse zrobi to za Ciebie.

Zainstaluj wtyczkę eclipse, dodając apply plugin: "eclipse" do swojego pliku build.gradle. Następnie uruchom gradle eclipse, aby wygenerować pliki Eclipse .project, .classpath i .settings. Wtyczka automatycznie pobierze wszystkie dostępne źródła i doda je do pliku .classpath (patrz atrybut sourcepath elementu classpathentry). Aby uzyskać import projektu do Eclipse, wybierz opcję File > Import... > Existing Projects into Workspace i wybierz projekt.

(Nie jestem pewien, czy wtyczka Idea działa tak samo dla użytkowników Idea, ale może to zrobić).

+0

Tak, z mojego doświadczenia, Gradle pobiera źródło .jar, a także łączy źródło w ustawieniach ścieżki kompilacji, aby można było debugować kod źródłowy: – djangofan

+2

Trzeba pamiętać: po oczyszczeniu gradle cache Musiałem "gradle cleanEclipse eclipse", a następnie zamknąć i ponownie otworzyć projekt eclipse, aby uzyskać eclipse, aby zobaczyć źródło ponownie. – iain

+0

Co z Androidem Studio? Po małych badaniach, myślę, że nie da się zrobić ... –

33

Zadanie zaćmienia można skonfigurować za pomocą opcji downloadSources. Poniżej znajduje się przykład takiej konfiguracji

apply plugin: 'java' 
apply plugin: 'eclipse' 

eclipse { 
    classpath { 
     downloadSources=true 
    } 
} 

więc uruchomić

gradle cleanEclipse eclipse 

aby go pobrać źródła.

+8

Jest to domyślne zachowanie według http://gradle.org/docs/current/dsl/org.gradle .plugins.ide.eclipse.model.EclipseClasspath.html # org.gradle.plugins.ide.eclipse.model.EclipseClasspath: downloadSources –

6

komentarz Piohen za powyżej powinny być swoją własną odpowiedź (ponieważ było to jedyne rozwiązanie, które pracował dla mnie)

  1. prawym przyciskiem myszy projekt, a następnie wybierz „Build Path” -> „Configure Build Path”;
  2. Wybierz "Zamów i wyeksportuj"
  3. Wybierz "Biblioteki aplikacji internetowych", a następnie kliknij przycisk "Na dole", a następnie "Biblioteki aplikacji internetowych" będą na dole;

i uzyskać w ten plugin Gradle Eclipse (więc nie trzeba to zrobić ręcznie za każdym razem):

Why is Eclipse not attaching 3rd party libs source files to a WTP-faceted Gradle project?

15

Kolejny haczyk nie wspomniano w innych odpowiedzi jest, gdy jesteś przy użyciu repozytorium mavenLocal() w pliku gradle.build. Jeśli w tym lokalnym repozytorium maven pobierany jest jar, ale nie ma pobranych źródeł lub javadocs w tym repo, gradle nawet nie spróbuje pobrać javadocs lub źródeł dla ciebie. Nawet z włączonymi eclipse.classpath.downloadJavadoc i eclipse.classpath.downloadSources.

Rozwiązaniem jest usunięcie mavenLocal() z repositories lub umieszczenie go na dole listy. Lub możesz setup maven do pobierania źródeł i javadocs i czyszczenia swojego lokalnego repozytorium maven (~/.m2/repository).

Bardziej szczegółowy opis problemu to here.

+3

To było to. _Roztwór polega na usunięciu mavenLocal() z repozytoriów lub umieszczeniu ich na dole list_ pracował dla mnie! – adarshr

+0

Zrobiłeś mój dzień! – Tommaso

+0

Cudownie, po dwóch dniach szukania zadziałało to dla mnie. –

7

Oto jak dodać wymaganą konfigurację w Gradle za pomocą wtyczek Idy:

Dla Eclipse:

apply plugin: 'java' 
apply plugin: 'eclipse' 

eclipse { 
    classpath { 
     downloadJavadoc = true 
     downloadSources = true 
    } 
} 

Dla IntelliJ

apply plugin: 'java' 
apply plugin: 'idea' 

idea { 
    module { 
     downloadJavadoc = true 
     downloadSources = true 
    } 
} 

Aby uruchomić te wtyczki:

gradle cleanEclipse eclipse 
gradle cleanIdea idea 
Powiązane problemy