ANTビルドにあるタスクをGradleに変換しようとしています:
<target name="index-assets" depends="copy-assets">
<path id="assets.path">
<!-- contexts (and surplus) -->
<dirset id="assets.dirset" dir="assets/" defaultexcludes="yes"/>
<!-- assets -->
<fileset id="assets.fileset" dir="assets/" includes="**" excludes="asset.index" defaultexcludes="yes"/>
</path>
<pathconvert pathsep="${line.separator}" property="assets" refid="assets.path" dirsep="/">
<mapper>
<globmapper from="${basedir}/assets/*" to="*" handledirsep="yes"/>
</mapper>
</pathconvert>
<echo file="assets/asset.index">${assets}</echo>
</target>
<target name="-pre-build" depends="index-assets"/>
私はまだGradleの基本的な概念を完全には理解していないと思いますが、私が試したことは次のとおりです。
task indexAssets << {
def assets = file("assets")
def contexts = files(assets)
inputs.file(assets)
outputs.file("assets/assets-gradle.index")
def tree = fileTree(dir: 'assets', include: ['**/*'], exclude: ['**/.svn/**', 'asset.index'])
contexts.collect { relativePath(it) }.sort().each { println it }
tree.collect { relativePath(it) }.sort().each { println it }
}
- ツリーは問題ありませんが、ファイル (リーフ) パスのみが含まれています
- ただし、ディレクトリ(コンテキスト)の単純なクリーンリストを取得できないようです。他のいくつかのバリアント(ツリー、包含/除外)を試しましたが、そのディレクトリに単一のファイルを取得するか、ディレクトリ名自体を取得するか、何も取得しません。「資産」ディレクトリにあるディレクトリの簡単なリストが必要です。
今のところ、パスを印刷しようとしていますが、後でこれらをファイル (ANT のエコー ファイルなど) に書き込む適切な方法も知りたいと思います。
更新:
このグルーヴィーなスニペットはその部分 (+ svn フィルター) を実行しているようですが、このタスクを実行するより「Gradley」な方法を見つけたいと思います。後でビルド前の依存関係としてビルド バリアントのコンテキストで実行されます。(注: このハックでは、パスの一部として「プロジェクト」を指定する必要がありました。タスクのプロジェクト コンテキストにいないと思いますか?)def list = [] def dir = new File("Project/assets") dir.eachDirMatch (~/^(?!\.svn).*/) { file -> list << file } list.each { println it.name }