У меня была такая же проблема. Я протестировал все вышеперечисленные решения, и ни одно из них не помогло мне.
Лучшее решение, которое я имел в виду, и это сработало для меня, - это предварительно создать эти родительские папки как пустые папки, прежде чем писать в них.
Итак, чтобы обратиться к исходной проблеме, вы должны использовать:
<fileSet>
<directory>./</directory>
<outputDirectory>/resources</outputDirectory>
<excludes>
<exclude>*/**</exclude>
</excludes>
<directoryMode>0700</directoryMode>
</fileSet>
Это должно быть помещено перед фактической копией в подпапку ресурсов в вашем примере.
. / - это просто какая-то существующая папка. Это может быть любая другая папка, если она существует. Обратите внимание, что мы исключаем любой файл из набора файлов.
Таким образом, результатом будет пустая папка с соответствующим набором разрешений.
С другой стороны, кто бы ни использовал tar для упаковки файлов, без этого набора файл tar не будет иметь разрешения, установленные для этой родительской папки. Таким образом, извлечение приведет к созданию новой папки, но с разрешениями извлекающего пользователя + его umask.
0700 использовался только для примера, конечно.