Różnica między konfiguracjami kompilacji i środowiska uruchomieniowego w Gradle

102

Moje pytanie jest trochę częste, ale jest też powiązane z Gradle.

Dlaczego potrzebujemy kompilacji i konfiguracji środowiska uruchomieniowego?

Kiedy coś kompiluję, potrzebuję artefaktów do konwertowania moich klas java na kod bajtowy, 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.

Xelian
źródło

Odpowiedzi:

149

W najczęstszym przypadku artefakty potrzebne w czasie kompilacji są podzbiorem tych, które są potrzebne w czasie wykonywania. Na przykład, powiedzmy, że program o nazwie appużywa biblioteki foo, a biblioteka foo wewnętrznie używa biblioteki bar. Tylko wtedy foojest potrzebny do kompilacji app, ale oba fooi barsą potrzebne do jej uruchomienia. Dlatego domyślnie wszystko, co umieścisz w compilekonfiguracji Gradle, jest również widoczne w jej runtimekonfiguracji, ale odwrotnie nie jest prawdą.

Peter Niederwieser
źródło
20
Szkoda, że ​​nie jest to wyraźnie wymienione w gradle.org/docs/current/userguide/dependency_management.html . Używają zarówno kompilacji, jak i środowiska
uruchomieniowego
2
@silasdavis W dokumentacji wyjaśnia różnicę: gradle.org/docs/current/userguide/ ... w 8.3. Konfiguracje zależności
angelcervera
@angelcervera Ach tak, 8. Podstawy zarządzania zależnościami i 51. Zarządzanie zależnościami. Rozumiem, dlaczego mają dwie sekcje, ale może byłoby miło, gdyby ta druga odwoływała się do pierwszej. Wydaje mi się, że wylądowałem na 51 i spodziewałem się, że dam pełny rachunek.
silasdavis
@silasdavis True. To samo dotyczy innych sekcji w dokumentacji. Muszę poświęcić tyle samo wolnego czasu na przeczytanie całej dokumentacji od A do Z.
angelcervera
1
@Peter Niederwieser Jeśli zadanie kompilacji wykazuje te same zależności co środowisko wykonawcze, w jakim scenariuszu należy użyć środowiska uruchomieniowego, a nie kompilacji?
rj2700