Azure DevOps Gradle任务构建Liferay应用偶发DirectoryNotEmptyException错误求助
Liferay应用Azure流水线Gradle构建buildCSS任务失败解决方法
问题场景
在Azure流水线使用Gradle构建多模块Java Liferay应用时,偶尔会触发buildCSS任务失败,报错信息如下:
Task :modules:MyModule2:buildCSS FAILED Using native Sass compiler There are no files to compile Exception in thread "main" java.nio.file.DirectoryNotEmptyException: C:\Windows\SERVIC~1\NETWOR~1\AppData\Local\Temp\portalCssImportPath6020035476982997428\com.liferay.frontend.css.common-5.0.8.jar\bourbon\functions at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) at java.nio.file.Files.delete(Files.java:1126) at com.liferay.css.builder.internal.util.FileUtil$1.postVisitDirectory(FileUtil.java:56) at com.liferay.css.builder.internal.util.FileUtil$1.postVisitDirectory(FileUtil.java:49) at java.nio.file.Files.walkFileTree(Files.java:2688) at java.nio.file.Files.walkFileTree(Files.java:2742) at com.liferay.css.builder.internal.util.FileUtil.deltree(FileUtil.java:47) at com.liferay.css.builder.CSSBuilder.close(CSSBuilder.java:137) at com.liferay.css.builder.CSSBuilder.main(CSSBuilder.java:81)
解决方法
- 预清理临时目录:在Gradle构建任务前添加PowerShell脚本,手动清理Windows临时目录中Liferay CSS Builder生成的临时文件夹,避免残留文件导致删除失败:
Remove-Item -Path "C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\portalCssImportPath*" -Recurse -Force -ErrorAction SilentlyContinue - 切换Sass编译器类型:在对应模块的
build.gradle中配置CSS Builder使用Java版Sass编译器,避免原生编译器可能引发的文件资源锁定问题:cssBuilder { sassCompiler = "java" } - 限制任务并行执行:若启用了Gradle多模块并行构建,尝试禁用并行或调整任务依赖,避免
buildCSS任务与其他任务竞争文件资源。在settings.gradle中添加:org.gradle.parallel = false - 升级CSS Builder依赖:检查项目中
com.liferay.css.builder的版本,升级至最新稳定版,该目录删除异常问题可能已在新版本中修复。
内容的提问来源于stack exchange,提问作者VKD
相关产品推荐
相关产品推荐

