Jar не выполняет бесконечный l oop, jar - это набор двоичных источников (и, возможно, ресурсов, таких как jsons, файлы свойств, xmls и т. Д. c.) Внутри артефакта.
Таким образом, работа maven как инструмента сборки заключается в подготовке артефакта. Как только артефакт создан, Maven готов, вы больше не можете влиять / изменять вещи.
Теперь, поскольку у вас есть среда выполнения, такая как spring - она может запускать некоторые bean-компоненты внутри jar-файлов при следующих условиях:
- Загрузка bean-компонента ленивым образом (только когда метод bean-компонента будет вызываться первым)
- Асинхронный запуск методов bean-компонентов (с использованием аннотации
@Async
) - Загружать bean-компоненты только в том случае, если указан какой-либо профиль (или другое условие, например свойство).
Все это способы настройки поведения приложения во время выполнения с помощью Spring, но опять же, технически maven тут нечего делать.
Так что, чтобы
избежать бесконечного l oop внутри банки
Вы можете узнать, какой боб точно вызывает бесконечное l oop (опять же, это вообще не 'jar', а какой-то конкретный c bean)
Используйте аннотацию @Async
или определите свой собственный пул потоков и запустите метод бин тха t вызывает l oop там (@Async
больше spring-i sh способ сделать это)
В любом случае, если вы загружаете бин пружиной, у него есть один поток для заполнения приложения контекст (который должен загрузить все компоненты и использовать механизм внедрения зависимостей). Поэтому, если этот поток застревает из-за того, что какой-то bean-компонент вызывает бесконечное значение l oop во время его инициализации (конструктор или метод после конструирования) - все приложение будет зависать.