Jenkins构建Android应用报错:Task 'clean'在根项目中未找到
嘿,我来帮你搞定这个Jenkins构建报错的问题!看到你遇到的FAILURE: Build failed with an exception. - What went wrong: Task 'clean' not found in root project 'ProjectName'.,结合你贴出来的模块build.gradle内容,我梳理了几个可能的原因和对应的解决方案:
问题根源
你的模块build.gradle里同时应用了com.android.application和base插件,但实际上com.android.application已经继承了base插件的所有功能,重复添加base插件会干扰Android插件默认提供的任务集合,这很可能就是clean任务找不到的核心原因。另外,也有可能是Jenkins构建时的工作目录没配置对,导致Gradle找不到正确的项目结构。
具体解决方案
方案一:移除多余的base插件
直接删掉build.gradle里的apply plugin:'base'这一行,修改后的开头应该是这样:
apply plugin: 'com.android.application' // 删掉上面那行多余的base插件引用
改完后先在本地项目根目录执行./gradlew clean测试下,确认本地能正常运行这个任务,再去Jenkins里重新触发构建。
方案二:给Jenkins的Gradle命令指定模块路径
如果Jenkins的工作目录没指向正确的项目根目录(就是包含settings.gradle的那个目录),也会出现找不到任务的情况。你可以把Jenkins里的Gradle构建命令改成:
./gradlew :你的模块名称:clean :你的模块名称:assembleRelease
记得把“你的模块名称”替换成实际的模块名(比如你项目里的ProjectName),这样Gradle就能精准定位到模块的任务了。
方案三:确保Gradle插件和构建工具版本兼容
你的项目用了buildToolsVersion '23.0.2',对应的Gradle插件版本最好匹配上。去项目根目录的build.gradle文件里,把Android插件版本改成和构建工具兼容的版本,比如:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } }
这个版本和23.0.2的构建工具是适配的,更新后同步Gradle再试构建。
验证小技巧
先在本地终端跑一遍./gradlew clean,如果本地能正常执行,那问题大概率出在Jenkins的配置上,重点检查工作目录和Gradle命令;如果本地也报错,那就是项目的Gradle配置问题,优先用方案一解决。
内容的提问来源于stack exchange,提问作者lakshmi yella

