2013-05-22 13 views
61

Moje pytanie jest trochę częste, ale jest również powiązane z Gradle.Różnice między konfiguracją kompilatora i środowiska wykonawczego w Gradle

Dlaczego potrzebujemy konfiguracji kompilacji i środowiska wykonawczego?

Kiedy kompiluję coś, potrzebuję artefaktów, aby konwertować moje klasy Javy w bajtode, więc potrzebuję konfiguracji kompilacji, ale dlaczego potrzebna jest konfiguracja środowiska wykonawczego, czy potrzebuję czegoś innego, aby uruchomić moją aplikację w JVM?

Przepraszam, jeśli to brzmi głupio, ale nie rozumiem.

Odpowiedz

91

W najczęstszym przypadku artefakty potrzebne w czasie kompilacji są podzbiorem wymaganych w czasie wykonywania. Na przykład, powiedzmy, że program o nazwie app używa biblioteki foo, a biblioteka foowewnętrznie używa biblioteki bar. Do kompilacji app potrzebne jest tylko foo, ale do ich uruchomienia potrzebne są zarówno foo, jak i bar. Dlatego domyślnie wszystko, co umieścisz w konfiguracji Gradle'a compile, jest również widoczne w konfiguracji runtime, ale przeciwieństwo nie jest prawdą.

+10

Wstydzie to nie jest wyraźnie wymienione w http://www.gradle.org/docs/current/userguide/dependency_management.html. Używają zarówno kompilacji, jak i środowiska wykonawczego bez wyraźnego określenia ich znaczenia ... – silasdavis

+2

@silasdavis W dokumentacji wyjaśniono różnicę: http://www.gradle.org/docs/current/userguide/userguide_single.html#configurations w wersji 8.3. Konfiguracje zależności – angelcervera

+0

@angelcervera Ach tak, 8. Podstawy zarządzania relacjami i 51. Zarządzanie zależnościami. Rozumiem, dlaczego mają dwie sekcje, ale być może byłoby miło, gdyby ten drugi odnosił się do pierwszego. Wydaje mi się, że wylądowałem na 51 i spodziewałem się, że dostarczy pełnego konta. – silasdavis

Powiązane problemy