Использовать сборочный плагин Maven для установки прав доступа к файлам Linux даже при запуске на других платформах? - PullRequest
18 голосов
/ 18 января 2011

Аналогичный вопрос: Может ли задача tar Ant установить разрешение для файла Linux, даже если задача используется на других платформах?

Если я использую плагин сборки Maven 2 с дескриптором 'project', есть ли способ установить разрешения сценария оболочки для исполняемого файла, например для включенных файлов сценария build.sh?

Пример:

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>project</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>

Это создаст три файла

  • -project.tar.bz2
  • -project.tar.gz
  • -проект-молния

И я хотел бы установить права доступа ко всем * .sh-файлам, находящимся в tar-файлах, как «исполняемые».

Ответы [ 2 ]

44 голосов
/ 18 января 2011

Это можно сделать с помощью параметра fileMode, доступного в плагине сборки Maven дескриптор сборки . Например

<assembly>
    ...
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/bin</directory>
            <outputDirectory>/bin</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
        </fileSet>
        ...
    </fileSets>
    ...
</assembly>
1 голос
/ 29 марта 2019

В комментариях спрашивалось, как установить разрешения для каталогов, чтобы они не заканчивались разрешениями d---------. Ответ довольно прост - используйте directoryMode:

<assembly>
    ...
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/bin</directory>
            <outputDirectory>/bin</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <directoryMode>0755</directoryMode>
        </fileSet>
        ...
    </fileSets>
    ...
</assembly>
...