使用Maven汇编插件设置Linux文件权限,即使在其他平台上运行?

类似的问题:即使在其他平台上使用,Ant的tar任务是否可以设置Linux文件权限?

如果我使用带有“project”描述符的Maven 2汇编插件,有没有办法将shell脚本权限设置为可执行文件,例如对于包含 build.sh 脚本文件?

例:

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

这将创建三个文件

  • -项目.tar.bz2
  • -项目.tar.gz
  • -项目-拉链

我想将tar文件中所有*.sh文件的文件权限设置为“可执行”。


答案 1

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

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

答案 2

在注释中询问如何为目录设置权限,以便它们不会最终获得权限。答案很简单 - 使用: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>

推荐