Різниця між конфігураціями компіляції та часу виконання у Gradle


102

Моє запитання трохи поширене, але воно пов'язане і з Gradle.

Навіщо нам потрібна конфігурація компіляції та виконання?

Коли я компілюю щось, мені потрібні артефакти, щоб перетворити свої класи Java в байт-код, тому мені потрібна конфігурація компіляції, але навіщо потрібна конфігурація виконання, чи потрібно мені щось інше, щоб запустити свою програму в JVM?

Вибачте, якщо це звучить нерозумно, але я не розумію.

Відповіді:


149

У найбільш поширеному випадку артефакти, необхідні під час компіляції, - це підмножина тих, що потрібні під час виконання. Наприклад, скажімо, що програма під назвою appвикористовує бібліотеку foo, а бібліотека foo внутрішньо використовує бібліотеку bar. Тоді fooпотрібно лише компілювати app, але обидва fooі barпотрібні для його запуску. Ось чому за замовчуванням все, що ви ставите на compileконфігурацію Gradle, також видно в його runtimeконфігурації, але навпаки не вірно.


20
Ганьба це не вказано прямо в gradle.org/docs/current/userguide/dependency_management.html . Вони використовують і компіляцію, і час виконання, не чітко вказуючи їх значення ...
silasdavis

2
@silasdavis У документації пояснюється різниця: gradle.org/docs/current/userguide/… в 8.3. Конфігурації залежності
angelcervera

@angelcervera Ага це так, 8. Основи управління залежностями та 51. Управління залежністю. Я бачу, чому вони мають два розділи, але, можливо, було б непогано, якби останній посилався на перший. Я думаю, що я приземлився на 51 і очікував, що він дасть повний рахунок.
silasdavis

@silasdavis Правда. Те саме для інших розділів у документації. Я повинен зайняти такий же вільний час, щоб прочитати всю документацію від А до Я.
angelcervera

1
@Peter Niederwieser Якщо завдання компіляції показують ті ж залежності, що і час виконання, у якому сценарії ви б використовували час виконання на відміну від компіляції?
rj2700
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.