У меня есть случай, когда мне нужно распаковать библиотеку с помощью:
весна-загрузка: переупаковка: требуется распаковать
В противном случае другая библиотека из проекта не сможет работать должным образом. Как указано в ссылке, выбранные библиотеки распаковываются и копируются во временный каталог. Распаковка библиотек во временный каталог - не лучшая идея, если я хочу, чтобы приложение работало дольше, чем время истечения срока действия временных файлов. Файлы будут удалены, и приложение просто перестанет работать должным образом.
До сих пор мне удавалось изменить целевое местоположение, перезаписав переменные среды TMP и ТЕМП., но в долгосрочной перспективе это звучит как ужасная идея.
Оцените любую помощь здесь.
Что такого в библиотеке, что заставляет вас ее распаковывать? Учитывая, что spring -boot является реализацией по соглашению, и эти шаги выходят за рамки соглашения, моим личным решением вашей проблемы было бы найти решение, не требующее распаковки библиотеки.
outputDirectory используется для размещения целевого jar-файла, а не для того, где библиотеки будут распакованы во время выполнения; @Kieveli эта функциональность поддерживается Spring-boot docs.spring.io/spring-boot/docs/current/reference/html/… именно в том случае, когда мне нужно использовать; к сожалению, я имею дело с проприетарными библиотеками, которые не могу изменить
Мне все еще любопытно, почему нужно его распаковать, но если вы не хотите делиться, ничего страшного. Моя весенняя загрузка работает как экземпляр Tomcat. Tomcat часто использует временное пространство для запуска веб-приложения. Это не означает, что временная папка будет удалена произвольно. У вас возникла проблема, когда распакованная библиотека была удалена во время работы веб-службы?
Я не могу поделиться подробностями о библиотеке (конфиденциальность), но для правильной работы требуется распаковка. Да, я серьезно столкнулся с этой проблемой в производственной среде, когда приложение внезапно перестало работать (через 10 дней) из-за исключения, похожего на ClassNotFound.




Эта проблема касается не только "requiresUnpack", это то, как spring-boot / tomcat обрабатывает свои временные файлы. Так что это может удивить вас и в других областях.
Существует проблема, описывающая такое поведение: https://github.com/spring-projects/spring-boot/issues/5009
Обходные пути:
server.tomcat.basedir для определения базового каталога Tomcat. Если не указано иное, используется временный каталог.-Djava.io.tmpdir=/var/tmp, чтобы запустить приложение с другим временным каталогом.Другое решение - НЕ распаковывать вашу библиотеку. Не храните его в своей толстой банке, а храните где-нибудь в пути к классам.
Я выберу -Djava.io.tmpdir=[location], возможно, в будущем появится способ настроить это по-другому: github.com/spring-projects/spring-boot/issues/15180
@GrzegorzGajos Вы также добавляете временное местоположение в class-path? Как приложение находит их после распаковки предполагаемых банок? Я имею в виду, что банки должны быть доступны на пути к классам, верно?
@ ds459 Приложение / Tomcat ищет их в каталоге по умолчанию. Это нестандартное поведение. Мне не нужно было добавлять временное местоположение в путь к классам.
Вы пробовали с outputDirectory docs.spring.io/autorepo/docs/spring-boot/1.5.10.BUILD-SNAPSH OT /…