Подтвердить что ты не робот

Разница между конфигурациями компиляции и времени выполнения в Gradle

Мой вопрос немного распространен, но он также связан с Gradle.

Почему нам нужна конфигурация компиляции и времени выполнения?

Когда я компилирую что-то, мне нужны артефакты для преобразования моих классов java в байт-код, поэтому мне нужна компиляция конфигурации, но зачем нужна конфигурация времени выполнения, мне нужно что-то еще для запуска моего приложения в JVM?

Извините, если это звучит глупо, но я не понимаю.

4b9b3361

Ответ 1

В наиболее распространенном случае артефакты, необходимые во время компиляции, являются подмножеством тех, которые необходимы во время выполнения. Например, скажем, что программа под названием app использует библиотеку foo, а библиотека foo внутренне использует библиотеку bar. Тогда для компиляции app требуется только foo, но для его запуска требуются как foo, так и bar. Вот почему по умолчанию все, что вы вставляете в конфигурацию Gradle compile, также отображается в конфигурации runtime, но противоположное не соответствует действительности.