首页 > 解决方案 > Gradle 7 中删除了旧版 `maven` 插件。请改用 `maven-publish` 插件

问题描述

我正在尝试使用 gradle 运行项目,但出现以下错误。

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\ISEP\ODSOFT\Projects\odsoft-21-22-nmb-g311\odsoft-21-22-nmb-g311\project\build.gradle' line: 4

* What went wrong:
An exception occurred applying plugin request [id: 'fr.putnami.gwt', version: '0.4.0']
> Failed to apply plugin class 'org.gradle.api.plugins.MavenPlugin'.
   > The legacy `maven` plugin was removed in Gradle 7. Please use the `maven-publish` plugin instead. See https://docs.gradle.org/7.2/userguide/publishing_maven.html#publishing_maven for details

* 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.

我用来运行项目的命令是gradle gwtRun.

我离开了我的 gradle bulid 文件

plugins {
    id "fr.putnami.gwt" version "0.4.0"
    id "maven-publish"
}

apply plugin: 'war'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'jacoco'
apply plugin: 'maven-publish'

//Java version compatibility to use when compiling Java source.
sourceCompatibility = 1.8
//Java version to generate classes for.
targetCompatibility = 1.8
//Script Version
version = '1.0'
 
repositories { 
    mavenCentral() 
}

dependencies {
    //testCompile 'junit:junit:4.12'
    //testCompile group: 'junit', name: 'junit', version: '4.12'
    testImplementation  group: 'junit', name: 'junit', version: '4.12'

    testImplementation 'org.easymock:easymock:2.5.2'
    testImplementation 'com.google.gwt:gwt-dev:2.8.1'
    implementation 'net.sourceforge.plantuml:plantuml:8001'
    //compile 'net.sourceforge.plantuml:plantuml:8001'

}

javadoc {
    options.addStringOption("sourcepath", "")
}


// If we woant to use the default ant build inside gradle
// ant.importBuild "build.xml"

putnami{

    module 'pt.isep.cms.Showcase'
    //module 'com.google.gwt.sample.contacts.Contacts'
    
    /** add gwt nature on eclipse project. require apply plugin: 'eclipse' to work. default : false*/
    googlePluginEclipse = true
    
    gwtVersion='2.8.1'
    
    compile {
        sourceLevel = '1.8'
    }
    
    jetty {
        /** enable debugging. */
        debugJava = true
        /** debug port to listen. */
        debugPort = 8000
        /** wait for debugger attachment. */
        debugSuspend = false
    }
}

// Jacoco
jacocoTestReport {
    reports {
        xml.enabled false
        csv.enabled false
    }
}

// This task generates the coverage report for the integration tests.
// Notice that it only includes data about the server code sice Jaccoco is not able to get data about cliente code that is transpiled to javascript
task jacocoIntegrationReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
    sourceSets sourceSets.main
    
    executionData = files("${buildDir}/jacoco/integrationTest.exec")
    
    reports {
        html.enabled = true
        xml.enabled = false
        csv.enabled = false
    }
}

// Integration Tests
task integrationTest(type: Test) {
    filter { 
        //all GWT unit tests, by naming convention
        includeTestsMatching "*GWTTest*"
    }    
    jacoco { 
            append = true
            enabled = true
            //classDumpFile = file("${buildDir}/jacoco/classpathdumps")
            
            excludes = ["com/steadystate/**"] 
    }
    // These Properties are required to run gwt integration tests
    systemProperties['gwt.args'] = "-devMode -logLevel WARN -war www-test"
}

tasks.withType(Test) {
    reports.html.destination = file("${reporting.baseDir}/${name}")
}

// Unit Tests
test { 
    filter { 
        //all JRE unit tests, by naming convention
        includeTestsMatching "*JRETest*"
    }
    jacoco { 
            append = true
            enabled = true
        //classDumpFile = file("${buildDir}/jacoco/classpathdumps")
    }   
}

据我了解,插件 maven 已在 gradle 版本 7 中删除。这句话正确吗?或者是被删除的putnami插件?

我应该怎么做才能让它工作?

标签: mavengradlegroovybuild.gradlegradle-plugin

解决方案


该插件在内部fr.putnami.gwt应用maven插件:

https://github.com/Putnami/putnami-gradle-plugin/blob/master/src/main/java/fr/putnami/gwt/gradle/PwtLibPlugin.java#L47

因此,fr.putnami.gwt与 Gradle 7 不兼容。

README回购中所述:

https://github.com/esoco/gwt-gradle-plugin提供了一个仍然受支持并具有更新版本的分支。如果您需要 Gradle 的 GWT 支持,请使用新版本。

所以,那么以下应该工作:

plugins {
    id "de.esoco.gwt" version "1.1.1"
}

推荐阅读