如何使Android Gradle构建依赖于提供jar文件的简单(非android库,非java)任务?

时间:2014-08-08 11:22:10

标签: android gradle

我有一个命令行程序,根据一组源文件,生成一个我想在Android gradle build(A)中使用的jar文件。此命令行程序只是将jar文件存储在磁盘上的目录中。

如何创建一个新的gradle项目(B),它运行我的命令行程序(在gradle多项目设置中),Android Gradle项目(A)依赖于它:换句话说,如果源代码是B改变,应该重建!

注意:

Project B既不是Android库项目,也不是java项目。它只是通过命令行运行程序,恰好将jar文件存储在文件系统上。

1 个答案:

答案 0 :(得分:3)

您可以通过在项目B中创建自己的自定义任务来执行此操作,以执行生成JAR的程序。确保正确声明输入/输出,以便Gradle知道如何处理任务的依赖关系:

task buildProjB {
    inputs.file file('my_source_file.name')
    ext.dest = new File(buildDir, "libs")
    outputs.dir ext.dest

    doLast {
        //  Run your program and put output in "libs" subdir
    }
}

tasks.whenTaskAdded { theTask ->
    if (theTask.name.contains("assemble")) {
        theTask.dependsOn "buildProjB"
    }
}

请注意,buildProjB任务被“挂钩”到任何assemble任务。您可能需要执行此操作或build任务之一,以便在正常的Android应用构建过程中正确构建它。

在项目A settings.gradle中,将项目B作为构建的一部分:

include ':projectA', ':projectB'

在项目A build.gradle文件中,使项目B成为依赖项:

dependencies {
    ...
    compile project(':projectB')
}

假设您在顶级Android Studio项目下面有项目B(Android Studio术语中的模块),因此与项目A处于同一级别。