我有一个命令行程序,根据一组源文件,生成一个我想在Android gradle build(A)中使用的jar文件。此命令行程序只是将jar文件存储在磁盘上的目录中。
如何创建一个新的gradle项目(B),它运行我的命令行程序(在gradle多项目设置中),Android Gradle项目(A)依赖于它:换句话说,如果源代码是B改变,应该重建!
注意:
Project B既不是Android库项目,也不是java项目。它只是通过命令行运行程序,恰好将jar文件存储在文件系统上。
答案 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处于同一级别。