即使在其他平台上运行,使用Maven程序集插件来设置Linux文件权限?

时间:2011-01-18 00:33:16

标签: java maven file-permissions tar maven-assembly-plugin

类似的问题:Can Ant's tar task set a Linux file permission even when the task is used on other platforms?

如果我将Maven 2程序集插件与'project'描述符一起使用,是否有办法将shell脚本权限设置为可执行文件,例如包含的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
  • -project拉链

我想将tar文件中所有* .sh文件的文件权限设置为'executable'。

2 个答案:

答案 0 :(得分:44)

这可以使用Maven Assembly Plugin assembly descriptor中提供的fileMode参数来完成。例如

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

答案 1 :(得分:1)

有人在评论中询问如何为目录设置权限,以使它们不会获得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>