Исполняемые файлы в файле войны
Мы хотели бы отправить несколько вспомогательных сценариев (сценариев оболочки) как часть войны приложений. К сожалению, похоже, что наша система сборки (maven) отбрасывает разрешения для всех файлов, и сценарии заканчиваются без установленного исполняемого бита.
Возможно ли это сделать? Поддерживает ли формат.war исполняемые файлы? Если да: как мог сказать Maven, чтобы сохранить разрешения / исправить их где-то в процессе?
4 ответа
Проблема, скорее всего, в том, что эти биты не поддерживаются в основном zip-формате.
Бит выполнения не нужно устанавливать, если вы явно выполняете / bin / sh с именем скрипта.
Также обратите внимание, что ваша программа, которая знает местоположение скрипта, может вызвать "chmod +x script.sh" перед запуском.
Вы также можете проверить и установить исполняемый флаг прямо из вашего Java-кода. См. http://docs.oracle.com/javase/6/docs/api/java/io/File.html.
AFAIK, нет способа установить права доступа к файлам в war/jar (однако это возможно при использовании подключаемого модуля Maven Assembly для создания бинарного дистрибутивного архива вашего проекта, но это другая история).
Итак, я бы либо:
- Поставьте (как бинарный дистрибутив) и запустите эти скрипты вне веб-приложения ~ или ~
- Прочитайте файлы из classpath, запишите их в
java.io.tmpdir
каталог, установите бит выполнения и затем выполните их оттуда ~ или ~ - Используйте решение @Thorbjørn (не пробовал, но, думаю, это сработает); Мне просто интересно, откуда вы выполняете эти сценарии.
Поставьте исполняемые файлы за пределы WAR. Позвоните им из войны.