Gradle SSH Plugin 2.1.0をリリースした
Gradle SSH Plugin 2.1.0、Groovy SSH 2.1.0をリリースしました。
2.1.0の変更点
SCPによるファイル転送をサポートしました。SFTPはJSchに組み込まれている機能を利用しているので簡単に実装できましたが、SCPはコマンドの標準入出力とのやり取りを実装する必要があります。そこで、過去のコードを捨てて、一から新しくStream Interactionの仕組みを実装しました。
具体的には、JSchのOutputStreamで受信バイトを受け取る方式から、InputStream#read()で受信バイトを取りに行く方式に変えました。これにより、受信スレッドの開始や受信バイトの受け取りのタイミングを自分でコントロールできるようになったので、ずいぶんとコードが書きやすくなりました。
まだ非効率な実装が残っているので、今後パフォーマンスを改善する予定です。
SCPコマンドの仕様については下記の記事がとても役に立ちました。