1

さまざまなファイルを Amazon S3 にアップロードおよびダウンロードするための ant ターゲットをいくつか作成したいと考えています。私はコマンドラインからS3Syncをうまく使ってきたので、これを Ant exec でラップするだけだと思った

<exec executable="tools/s3sync/S3Sync.exe" failonerror="true" />

すべての設定は、S3Sync が使用する設定ファイルにあります。いくつかの引数を追加して、ある時点でマクロ定義にラップしたいと思うでしょうが、この例では単純にしています。

残念ながら、exe は Ant からの実行を好まないようです。

 [exec]
 [exec] Unhandled Exception: System.IO.IOException: The handle is invalid.
 [exec]
 [exec]    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
 [exec]    at System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded)
 [exec]    at System.Console.get_WindowWidth()
 [exec]    at S3Sync.Program.ClearProgressLines()
 [exec]    at S3Sync.Program.WriteConsoleLineClear(String InputLine)
 [exec]    at S3Sync.Program.WriteToLog(String LogLine, Int32 LogLineLevel)
 [exec]    at S3Sync.Program.Main(String[] args)

dir、spawn、vmlauncher、およびその他の exec 属性を設定しようとしましたが、役に立ちませんでした。

次に試すことができることについて何か考えはありますか?

アリ 1.8.4、Windows 7

4

2 に答える 2

4

S3Sync が進行状況の行をクリアしようとしているように見えますが、コンソールにアクセスできないために失敗します。Ant の下で実行する場合、実際にはコンソールを持っていないため、理にかなっています。少なくとも、すべてのI/O コマンドを実行できるコンソールではありません。

-ShowTransferProgress falseパラメータを追加しようとしましたか?

于 2012-12-03T01:32:53.147 に答える
0

これが、役立つと思われる他の人のための私のマクロ定義です。キーとその他の設定は、s3Sync.exe.configで設定されます

<macrodef name="s3upload">
    <attribute name="bucket"/>
    <attribute name="logOnly" default="${s3upload.log.only}"/>
    <attribute name="localFolder"/>
    <sequential>
        <exec executable="${s3sync.exe}" failonerror="true">
            <arg line="-SyncDirection upload"/>
            <arg line="-LogOnlyMode @{logOnly}"/>
            <arg line="-BucketName @{bucket}"/>
            <arg line="-LocalFolderPath @{localFolder}"/>
            <arg line="-ShowTransferProgress false"/>
            <arg line="-UploadHeaders x-amz-acl:public-read"/>
        </exec>
    </sequential>
</macrodef>

<macrodef name="s3download">
    <attribute name="bucket"/>
    <attribute name="logOnly" default="false"/>
    <attribute name="localFolder"/>
    <sequential>
        <exec executable="${s3sync.exe}" failonerror="true">
            <arg line="-SyncDirection download"/>
            <arg line="-LogOnlyMode @{logOnly}"/>
            <arg line="-BucketName @{bucket}"/>
            <arg line="-LocalFolderPath @{localFolder}"/>
            <arg line="-ShowTransferProgress false"/>
        </exec>
    </sequential>
</macrodef>

彼らはこのように慣れます

<s3download bucket="${s3.logs.bucket}" localFolder="${local.logs.path}" />
于 2012-12-05T20:31:58.793 に答える