2016-04-26 21 views
1

私は、自動生成されたクラスを必要とするAndroidライブラリプロジェクトを持っています。このクラスは、ライブラリプロジェクトのbuildSrcディレクトリに配置されたGroovyスクリプトを使用して、ビルド時に生成されます。これは、それだけでうまくいきます。二次モジュールのGradle buildSrc依存関係

私はそのライブラリを使用しているアプリプロジェクトを持っています。そのため、Androidスタジオはアプリとライブラリの2つのモジュールで開きます。この場合、ライブラリのbuild.gradleはbuildSrcディレクトリ内のGroovyクラスを見つけることができません。

ここに私の現在のディレクトリ構造があります。

|-- app-module (main module) 
    |-- /* application code and resources */ 
    |-- build.gradle 
|-- library-module 
    |-- buildSrc 
     |-- CodeGenerator.groovy /* within its package */ 
     |-- build.gradle 
    |-- build.gradle /* depends on CodeGenerator.groovy */ 

これが機能するために私が見つけた唯一の方法は、ライブラリからアプリケーション全体にbuildSrcディレクトリをコピーすることです。

メインモジュールに全体をコピーせずにGroovyビルドの依存関係を追加する別の方法はありますか?

+0

私は同様の問題を抱えていると私はそれが失敗したかを示すために公共のgithubのを作成しました。 'myLib'プロジェクトで' gradle build'を実行すると、すべてがクリアされますが、ルートプロジェクトで 'gradle build 'を実行すると、上記の理由でうまくいきません。助けていただければ幸いです! 'git clone https:// github.com/mikesol/cradle-multi-project-buildsrc.git'を使ってプロジェクトをチェックアウトすることができます – mikesol

答えて

0

gradleタスクでdependOnマーカーを使用しようとしましたか?

task taskX << { 
    println 'taskX' 
} 

task taskY << { 
    println 'taskY' 
} 

taskX.dependsOn taskY 

詳しい情報はここで見つけることができます:https://docs.gradle.org/current/userguide/more_about_tasks.htmlサブチャプター17.4

+0

これはタスクの問題ではありません。タスクは正常に実行されています。私が抱えている問題は、複数のプロジェクトとしてAndroid Studioを開くときに発生します(1つはアプリケーション、もう1つはライブラリです)。 buildSrcディレクトリはメインモジュールにしか存在しないので(ドキュメントに従って)、ライブラリ内のbuild.gradleはGroovyクラスの依存関係を見つけることができません(アプリケーションプロジェクトではなくライブラリプロジェクトに配置されているため)。 – anavarroma

関連する問題