即使在其他平台上运行,也使用 Maven 程序集插件设置 Linux 文件权限?
Posted
技术标签:
【中文标题】即使在其他平台上运行,也使用 Maven 程序集插件设置 Linux 文件权限?【英文标题】:Use Maven assembly plugin to set Linux file permissions even when run on other platforms? 【发布时间】:2011-06-10 19:16:29 【问题描述】:类似问题:Can Ant's tar task set a Linux file permission even when the task is used on other platforms?
如果我使用带有“项目”描述符的 Maven 2 程序集插件,有没有办法将 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-zip我想将 tar 文件中的所有 *.sh 文件的文件权限设置为“可执行”。
【问题讨论】:
【参考方案1】:在 cmets 中询问如何为目录设置权限,以便它们不会以 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>
【讨论】:
【参考方案2】:这可以使用 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>
【讨论】:
如果我用 Tycho 编译我的插件 Eclipse RCp 它是如何工作的?我需要在哪里写这些文件?我只有一些 pomx.xml 文件... Tycho 有“fileMode”吗? 它将我的 bin/ 目录设置为 d--------- 权限:\。里面的文件没问题。 这将创建具有 775 权限的文件的 tar,所有目录(文件夹)甚至没有读取权限(d--------)。为此应该怎么做?以上是关于即使在其他平台上运行,也使用 Maven 程序集插件设置 Linux 文件权限?的主要内容,如果未能解决你的问题,请参考以下文章
即使没有其他进程阻塞该端口,Node.js 应用程序也无法在端口 80 上运行
exec-maven-plugin 说不能运行指定的程序,即使它在 PATH 上
即使在添加类路径和主类之后也没有主清单属性 maven 构建