在Android Gradle 3.6.1中运行构建任务后未生成Jar
我的build jar任务在3.5.3年级可以正常工作,但在3.6.1年级不起作用.我检查了我的构建文件,但是,奇怪地缺少了/build/intermediates/packaged-classes/
目录.
My build jar task works fine in grade 3.5.3, but it doesn't work in grade 3.6.1. I checked my build files, however, the /build/intermediates/packaged-classes/
dir is weirdly missing.
gradle脚本:
task buildJar(dependsOn: ['build'], type: Jar) {
doFirst {
manifest {
attributes 'Jar-VersionName': jarVersionName
attributes 'Jar-VersionCode': jarVersionCode
}
}
from zipTree(file('build/intermediates/packaged-classes/release/classes.jar'))
appendix = ""
baseName = "pp"
version = jarVersionName + "_" + jarVersionCode
classifier = "release"
extension = "jar"
destinationDir = file('build/libs/')
}
//dx --dex --output=target.jar origin.jar
task buildDex(dependsOn: ['buildJar'], type: Exec) {
workingDir buildDir.absolutePath + "/libs"
executable "dx"
args "--dex"
args "--output=" + buildJar.archiveName
args buildJar.archiveName
}
错误日志:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':p2p:buildJar'.
> Cannot expand ZIP '/Users/william/AndroidStudioProjects/Work/lib_plugin/project/build/intermediates/packaged-classes/release/classes.jar' as it does not exist.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
我环顾四周,显然我可以在这些解决方案之间进行选择,但是它们对我来说太老了.
I've looked around and apparently I've got the choice between these solutions, but they are so old solution for me.
那么,生成的jar的新路径在哪里?
So, where is the new path of the generated jar?
我找到了!当我将gradle版本升级到4.0时,我在 build/intermediates/aar_main_jar/release/classes.jar
路径中找到了 class.jar
.
I found it! When I upgrade gradle version to 4.0, I find the class.jar
in build/intermediates/aar_main_jar/release/classes.jar
path.
因此,完整的构建任务代码如下:
so, the full build task code is below:
def jarPath = buildDir.absolutePath + "/libs"
def jarBaseName = "plugin"
task buildJar(dependsOn: ['build'], type: Jar) {
doFirst {
manifest {
attributes 'Jar-VersionCode': jarVersionCode
}
}
from zipTree(file('build/intermediates/aar_main_jar/release/classes.jar'))
// [archiveBaseName]-[archiveAppendix]-[archiveVersion]-[archiveClassifier].[archiveExtension]
archiveBaseName = jarBaseName
archiveAppendix = null
archiveVersion = "$jarVersionName-$jarVersionCode"
archiveClassifier = "release"
archiveExtension = "jar"
destinationDirectory = file(jarPath)
}
// dx --dex --output=target.jar origin.jar
task buildDex(dependsOn: ['buildJar'], type: Exec) {
workingDir jarPath
executable "dx"
args "--dex"
args "--output=" + buildJar.archiveFileName.get()
args buildJar.archiveFileName.get()
}