我使用Android
构建我的Gradle
应用程序。
在编译阶段检索依赖jar文件,这些jar文件的路径是动态的(因为路径中有内部编号,例如 / home / user1 / workspace / myapp / libs / privatejar /建立-1019 / a.jar文件)。
我的gradle配置文件如下所示。
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
applicationVariants.all { variant ->
variant.javaCompile.dependsOn('GetJarUsingCompanyPrivateProtocol')
}
}
dependencies {
compile files('local/path/of/company/private/jar')
}
task GetJarUsingCompanyPrivateProtocol {
// This command will retrieve the jar
// into folder "local/path/of/company/private/jar"
commandLine 'get_jar_command'
}
因为第一次执行gradle compile命令之前jar文件不存在,所以总是会抱怨“找不到类*”。 但是,如果我第二次执行gradle编译,它将起作用。
所以我在这里有两个问题:
我知道我可以执行 get_jar_command ,然后触发gradle
版本,但这很烦人,我可以一次性完成吗?
答案 0 :(得分:0)
我终于找到了解决方案。
Gradle构建有三个不同的阶段:
依赖关系块将在配置阶段执行。因此,要在依赖关系块中使用依赖关系jar,必须在初始化阶段或配置阶段但在依赖关系块执行之前下载依赖关系jar。
就我而言,不使用初始化阶段。所以我必须确保在依赖阻止之前下载依赖jar。简单来说,调整块序列就可以了。
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
applicationVariants.all { variant ->
variant.javaCompile.dependsOn('GetJarUsingCompanyPrivateProtocol')
}
}
task GetJarUsingCompanyPrivateProtocol {
// This command will retrieve the jar
// into folder "local/path/of/company/private/jar"
commandLine 'get_jar_command'
}
dependencies {
compile files('local/path/of/company/private/jar')
}
注意:doLast of task中的逻辑将在执行阶段执行。这就是我使用
的原因task GetJarUsingCompanyPrivateProtocol {
commandLine 'get_jar_command'
}
无论
task GetJarUsingCompanyPrivateProtocol {
doLast {
commandLine 'get_jar_command'
}
}
,也不
task GetJarUsingCompanyPrivateProtocol << {
commandLine 'get_jar_command'
}