我项目中的 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 文件中,它可能会解决问题。但这不是我正在寻找的解决方案(冗余代码......)。
最佳答案
你可以通过几种不同的方式做到这一点。您可以为要构建为库的外部代码创建一个单独的“模块”,并使您的应用程序对该模块具有编译依赖项(gradle 中的项目 - gradle 和 IntelliJ 术语之间的一个可爱的差异。)或者,如果您希望保留您现在拥有的基于任务的结构,您可以修改现有的 Android 特定任务以依赖于您的新任务:
androidDependencies.dependsOn thrift
现在,当您执行同步(或
gradlew assemble
)时,构建应该正确获取依赖项。
关于android - 如何使用外部 gradle 文件将源文件添加到 gradle 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622402/