如何使用外部gradle文件将源文件添加到gradle项目

时间:2014-12-23 14:31:32

标签: android gradle android-studio android-gradle

我的项目中的java类依赖于某些文件。当我尝试在Android Studio中同步所有gradle文件时,应自动导入这些文件。现在我在build.gradle文件中有一个任务,它从另一个构建文件(compile.gradle)运行外部任务。然后,compile.gradle文件将必要的文件夹复制到我的主项目中。

如果我先手动调用任务然后同步整个项目,一切正常。但是一旦我尝试同步项目,而不手动调用任务,外部compile.gradle文件就不会被执行,堆栈跟踪会显示“找不到类”错误。

task thrift(type: GradleBuild) {
    buildFile = '../other_project/compile.gradle'
    startParameter.projectProperties = ['example.bin.java': example_bin_java,
        'example.src': example_src] //Should not be important
    tasks = ['clean', 'compile', ...]
}

我已经在某处读过我不应该通过外部任务导入这些文件,因为它们只能在“执行阶段”(生命周期:初始化,配置,执行)中执行,显然如果我同步或执行,这个阶段就不会被调用该项目。但是我无法想出这个问题的解决方案。我可能不得不使用另一种方式从外部gradle文件执行任务(没有GradleBuild任务)。

在Android Studio中同步所有gradle文件时,如何强制/声明执行外部任务?

如果我将外部任务复制到build.gradle文件,它可能会解决问题。但这不是我想要的(冗余代码......)。

2 个答案:

答案 0 :(得分:0)

你可以用几种不同的方式做到这一点。你可以创建一个单独的"模块"将您的外部代码构建为库并使您的应用程序对该模块具有编译依赖性(gradle中的项目 - gradle和IntelliJ术语之间的差异。)或者,如果您希望保留基于任务的结构,那么您现在拥有,您可以修改现有的Android特定任务,以取决于您的新任务:

androidDependencies.dependsOn thrift

现在,当您执行同步(或gradlew assemble)时,构建应该正确地获取依赖项。

答案 1 :(得分:0)

我将thrift.execute()添加到了成绩文件中。 也许不是强制执行任务的最佳方法,但结果却是如此 进入通缉行为。