这是我的答案,项目结构如下:
MyProject
-- MyAndroidLib
-- JarProject
这表示 gradle 顶级项目“MyProject”,它有一个子项目“MyAndroidLib”,它依赖于一个纯 Java 项目“JarProject”,该项目使用不同的代码构建,用于调试而不是发布版本。
我将利用 Android 的“debugCompile”和
'releaseCompile' 配置。在依赖 jars 的 Android 子项目 ('MyAndroidLib') 中,在依赖项中添加以下行:
//MyAndroidLib build.gradle
def jarProject = project(':MyProject:MyAndroidLib:JarProject')
def jarPath = pcfProject.projectDir.toString()
dependencies {
....
compile jarProject
debugCompile files(jarPath + '/' + jarProject.debugJarName)
releaseCompile files(jarPath + '/' + jarProject.releaseJarName)
}
定义“jarProject”定义是为了简化从 MyAndroidLib 项目中对其的访问。 (如果你知道更好的方法......)
这样做的要点是为“debugCompile”和“releaseCompile”配置定义单独的调试和发布 jar 路径。 'debugJarName' 和 'releaseJarName' 在 JarProject 的 gradle.properties 文件中定义如下:
//JarProject gradle.properties
debugJarName=jarproject_d.jar
releaseJarName=jarproject_r.jar
在 JarProject 的 gradle 文件中定义一个任务,该任务构建由该属性文件命名的两个 jar 文件。就我而言,它们是由位于该项目中的 ant 构建文件的“编译”目标直接在项目文件夹中构建的。
//JarProject build.gradle
apply plugin: 'java'
project.ext.set("debugJar", file(projectDir.toString() + "/" + debugJarName))
project.ext.set("releaseJar",file(projectDir.toString() + "/" + releaseJarName))
task buildJars(type: Exec) {
description 'Build the debug and release jars for the JarProject'
outputs.files debugJar,releaseJar
commandLine 'ant', 'compile'
}
task compileJava.dependsOn('buildJars')
artifacts {
buildJars
}
clean.dependsOn('cleanBuildJars')
clean << {
exec {
commandLine 'ant', 'clean'
}
}
我利用了“java”插件,因为它定义了一个“编译”接口,但我还没有弄清楚如何从头开始构建它,甚至从“基础”插件。该项目利用了创建的自动“cleanBuildJars”任务,因为我在“buildJars”任务中定义了输出。这是必要的,以便根据需要构建它们。我可能也需要定义“输入”,因为如果它们改变......
如果有人看到我在 gradle/Android 世界中的第一次绊脚石可以如何改进,请。根据需要添加 cmets。