Я понимаю разницу между временем выполнения и временем компиляции и то, как различать эти два понятия, но я просто не вижу необходимости делать различие между зависимостями времени компиляции и времени выполнения .
Я задыхаюсь от этого: как программа может не зависеть от чего-то во время выполнения, от чего она зависела во время компиляции ? Если мое приложение Java использует log4j, то ему нужен файл log4j.jar для компиляции (мой код интегрируется с методами-членами и вызывает их изнутри log4j), а также во время выполнения (мой код не имеет абсолютно никакого контроля над тем, что происходит, когда код внутри log4j .jar запущен).
Я читал об инструментах разрешения зависимостей, таких как Ivy и Maven, и эти инструменты четко различают эти два типа зависимостей. Я просто не понимаю, зачем это нужно.
Может ли кто-нибудь дать простое объяснение типа "королевского английского", желательно с реальным примером, который мог бы понять даже такой бедняга, как я?