【问题标题】:How to specify the permissions of a subdirectory when using the tar task of ant in linux?linux中使用ant的tar任务时如何指定子目录的权限?
【发布时间】:2018-05-11 10:18:21
【问题描述】:

我正在尝试使用 ant 的 tar 任务压缩文件。我想为jre下bin目录下的文件创建755权限。

你要压缩的目录结构如下:

jre
|
+-- 垃圾箱
|
+-- 库
|
`-- 等等

ant build.xml 文件如下所示:

<chmod file="${basedir}/jre/bin/**" perm="755"/>
<target name="dist">
    <tar destfile="${basedir}/jre.tar">
        <tarfileset dir="${basedir}/jre" />
    </tar>
</target>

但是,如果你解压tar文件,bin目录下所有文件的权限都是644。 如何为bin,jre子目录中的所有文件创建一个755权限的tar文件?

【问题讨论】:

    标签: java ant permissions tar


    【解决方案1】:

    我找到了解决方案! 我不知道 prefix 属性的作用……抱歉。

    所以,我改变了build.xml,如下所示:

    <chmod file="${basedir}/jre/bin/**" perm="755"/>
    <target name="dist">
        <tar destfile="${basedir}/jre.tar" prefix="jre" >
            <tarfileset dir="${basedir}/jre" >
                <exclude name="**/bin/**" />
            </tarfileset>
            <tarfileset dir="${basedir}/jre/bin" prefix="jre/bin" filemode="755" />
        </tar>
    </target>
    

    当我使用上面的脚本运行 ant 时,会得到我想要的很棒的结果。谢谢!

    【讨论】:

      【解决方案2】:

      您可以尝试以下方法:

      <chmod perm="755" type="file">
        <fileset dir="${basedir}/*"/>
      </chmod>
      

      这会创建包含所有子目录的目录的文件集,并创建文件集的权限。

      【讨论】:

      • 通过ant通过tar打包jre后,用户解压tar文件后,jre/bin目录下的文件权限变为644。
      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多