Исполняемые файлы в файле войны

Мы хотели бы отправить несколько вспомогательных сценариев (сценариев оболочки) как часть войны приложений. К сожалению, похоже, что наша система сборки (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. Позвоните им из войны.

Другие вопросы по тегам