Gradle从5.6升级到8.3后构建失败,NpmSetupTask配置异常
Gradle 5.6升级至8.3构建失败解决方案
问题根源
你使用的com.moowork.node插件1.3.1是老旧未维护版本,不兼容Gradle 8.x的任务输入/输出验证机制。插件内部的NpmSetupTask类注解不符合Gradle最新规范,导致构建报错。
解决步骤
1. 替换为官方维护的Node.js Gradle插件
移除过时的com.moowork.node插件,改用com.github.node-gradle.node插件(该插件由Gradle官方生态维护,兼容新版Gradle)。
2. 调整构建脚本配置
- 清理冗余的
apply plugin: 'war'(已在plugins块中声明) - 适配新插件的npm配置语法
- 保留原有业务逻辑的同时,修复依赖关系
修改后的完整构建脚本
plugins { id 'com.github.node-gradle.node' version '7.0.0' id 'war' } jar.enabled = false // 配置npm安装参数 npmInstall { def registry = "--registry=" + REPO_ROOT_URL registry = registry.contains("repo.") ? registry + "/api/npm/csf-npm-delivered" : registry + "/csf-npm-delivered" args.set(['--no-optional', registry]) } // 自定义任务:复制build目录到dist并清理build task npmRunBuild { dependsOn npmInstall // 确保npm安装完成后再执行 doLast { copy { from 'build' into 'dist' } delete 'build' } } war { archiveFileName = "smk.smk-configuration.war" from(fileTree("dist")) { into "/" } manifest { attributes( "Include-Resource": "dist", "Web-ContextPath": "/gui/nsmk/", "Bundle-SymbolicName": "smk.smk-configuration", "Bundle-Name": "smk.smk-configuration" ) } classpath = classpath.filter { file -> !file.name.endsWith('jar') } } clean { doLast { delete 'dist' } } processResources.dependsOn npmInstall war.dependsOn npmRunBuild
额外说明
- 插件版本
7.0.0兼容Gradle 8.3,可根据需求选择对应适配版本 - 若你的前端项目需要执行
npm run build命令,可调整npmRunBuild任务:
task npmRunBuild { dependsOn npmInstall, node.npm.run('build') doLast { copy { from 'build' into 'dist' } delete 'build' } }
内容的提问来源于stack exchange,提问作者Yuvaraj B V
相关产品推荐
相关产品推荐

