升级到 Gradle 7.3 后节点构建失败

Node Build fail after upgrade to Gradle 7.3

在 nodeSetup 构建失败并出现以下错误后,我们已将 gradle 从 4.8 升级到 7.3。

Could not find method layout() for arguments [pattern, com.moowork.gradle.node.task.SetupTask$_addRepository_closure5$_closure7@25995910] on object of type org.gradle.api.internal.artifacts.repositories.DefaultIvyArtifactRepository.

下面是 build.gradle 的代码片段。

buildscript {
repositories {
    maven {
        url "https://plugins.gradle.org/m2/"
    }   
}
dependencies {
    classpath "com.moowork.gradle:gradle-node-plugin:1.3.1"
    classpath "io.spring.gradle:dependency-management-plugin:1.0.11.RELEASE"
}
}

apply plugin: "com.moowork.node"
apply plugin: "io.spring.dependency-management"
node {
    version = "16.13.12"
    npmVersion = "6.12.0"
    download = true
    nodeModulesDir = file("/XXX")
}

原因: gradle 6.8 中有一个突破性的变化,你可以在这里查看: https://docs.gradle.org/current/userguide/upgrading_version_6.html#configuring_the_layout_of_an_ivy_repository

"The 'layout' method taking a configuration block has been removed and is replaced by 'patternLayout'

您的插件“com.moowork.gradle:gradle-node-plugin:1.3.1”正在使用未在此库中升级的方法。

解法: 您可以使用此 gradle-node-plugin 而不是 "com.moowork.gradle:gradle-node-plugin:1.3.1"

安装: https://github.com/node-gradle/gradle-node-plugin/blob/master/docs/installation.md 安装节点相关的插件可以通过多种方式完成。最简单的方法是在 build.gradle 文件中使用插件闭包:

plugins {
  id "com.github.node-gradle.node" version "3.1.1"
}

您也可以使用传统的Gradle方式安装插件:

buildscript {
  repositories {
    gradlePluginPortal()
  }

  dependencies {
    classpath "com.github.node-gradle:gradle-node-plugin:3.1.1"
  }
}

apply plugin: 'com.github.node-gradle.node'