2016-04-26 47 views
1

我有一个需要自动生成的类的Android库项目。这个类是在编译期间通过放置在Library项目的buildSrc目录中的Groovy脚本生成的。这个工作本身很好。辅助模块中的Gradle buildSrc依赖项

然后我有一个使用该库的应用程序项目,所以我打开两个模块的Android Studio:应用程序和库。在这种情况下,库中的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作为一个多项目(一个是应用程序,另一个是图书馆)打开时,会出现问题。由于buildSrc目录只能存在于主模块中(根据文档),因此库中的build.gradle无法找到Groovy类的依赖关系(因为它放置在Library项目中而不是应用程序项目中)。 – anavarroma

相关问题