web-dev-qa-db-ja.com

Gradleを使用して、ファイルが特定の場所に存在することをどのように確認できますか?

AndroidアプリケーションにGradleを使い始めています。開発者が./src/res/values/specialfile.xmlなどの特定の場所にファイルを作成できない場合、ビルドを失敗させたいのですが

少し searching を使用すると、.doFirstが機能すると信じるようになりました

Android.doFirst { 
    assert file("./src/res/values/specialfile.txt").exists() 
} 

ただし、Gradleは "サポートされていないGradle DSLメソッドが見つかりました: 'doFirst()'!"

ファイルの存在をアサートするにはどうすればよいですか?

25
Mendhak

doFirstはtasksオブジェクトにのみ存在します。 Androidはタスクではありません。

開発者がビルドを試みない場合でも(たとえば、tasksタスクを実行している場合など)常にこのテストを実行する場合は、単に_build.gradle_

_assert file("./src/res/values/specialfile.txt").exists() 
_

ただし、これは非ビルドタスクでも、モデルがIDE統合用にビルドされている場合でも)実行されるため、実際にはお勧めできません。

Androidビルドの何よりも前に実行されるpreBuildというタスクがあるため、別のタスクまたはdoFirstのいずれかを使用して、テストをフックできます。

_preBuild.doFirst { 
    assert file("./src/res/values/specialfile.txt").exists() 
} 
_
45
Xavier Ducrohet