10

私は次のことを行うantbuild.xmlファイルを書いています:

  • zipフォルダー(.zip)を取得します
  • 解凍します
  • 多数のファイルを追加します
  • 結果のファイルを圧縮します

build.xmlからのコードの抜粋:

<!-- Unzip SDK to a temporary directory -->
<unzip src="${zipFile}" dest="tmp"/>

<!-- pull in the files from another directory -->
<copy todir="tmp/someDirectory" >
  <fileset dir="${addedFiles}" />
</copy>

<!-- Zip up modified SDK -->
<zip destfile="${destDir}" basedir="tmp"/>

これはすべて完全に機能しますが、antビルドを実行する前にzipファイルに設定された権限が、antビルドによって作成されたzipファイルで失われる点が異なります。たとえば、以前は実行可能だったファイルは、もはや実行可能ではありません。

だから私の質問:すでに存在するファイルの権限を破壊することなく、antを使用してzipアーカイブにファイルを追加することは可能ですか?

Ant1.7.1を使用しています

4

4 に答える 4

9

Ant解凍ターゲットを使用しているときに同じ問題が発生しました:

<unzip src="${project.build.directory}/${project.build.finalName}.zip" dest="${user.home}/apps" overwrite="true" />

上記の解凍ターゲットを使用すると、zipファイル内のシェルスクリプトの権限が失われました。

いくつかの調査の後、私はunzipコマンドラインパラメータでfollow'exec'antターゲットを使用しました。それは機能しました。

<!-- Use command line unzip to keep file permissions -->
<exec executable="unzip" spawn="true">
    <arg line="-o ${project.build.directory}/${project.build.finalName}.zip -d ${user.home}/apps" />
</exec>

この種の問題に遭遇したときに、これが他の誰かに役立つことを願っています。

ありがとう、J

于 2011-12-08T05:53:35.180 に答える
8

ファイルのアクセス許可を保持するためのzipタスクを取得することはできませんが、明示的に設定することはできます。

<zip destfile="installer.zip" >
<zipfileset filemode="755" dir="../" includes="artisan/install.*" />
</zip>

(これはWindowsとOSXで私のために働いた)

于 2013-07-03T16:08:48.860 に答える
3

Javaの制限により、antは解凍時に権限に関するすべての情報を破棄することが判明しました。ただし、可能なことは、既存のファイルのアクセス許可を保持する既存のzipファイルにファイルを追加することです。

<!-- Add to zip -->
<zip destfile="${existingZipFiledirectory}.zip"
   basedir="${directoryOfFilesToAdd}"
   update="true"
/>

上記のスクリプトは、basedirのコンテンツで指定されたzipファイルを更新し、元のzipのファイル権限を保持します。

于 2010-03-04T12:28:52.033 に答える
-1

私の知る限り、この機能(preserve0permissions)はAnt1.8で導入されました。以前のバージョンのAntは権限を保持していませんでした。

Ant 1.7.1を使い続けている場合は、Tarを使用して、(私が間違っていなければ)アクセス許可を保存できます。

于 2010-03-03T20:05:01.377 に答える