gradle升级到7后找不到org.gradle.api.DefaultTask类型的方法pom()

问题描述 投票:0回答:1

我正在将 gradle 从 2.6 升级到 7.0,升级后我收到此错误

在 org.grale.api.DefaultTask 类型的任务中找不到参数的 pom() 方法。

在我删除了应用插件后:“maven”已被弃用并替换为“maven-publish”

我试图在mavel-publish中找到pom方法的替代品,但没有成功

task createPomFiles {
    pom {
        project {
            groupId groupId
            artifactId 'generic-connector'
            version version
        }
    }.writeTo("$project.buildDir/resources/../pom.xml")
}

涉及:如何让gradle在项目根目录为maven用户生成有效的pom.xml文件?

gradle upgrade maven-plugin maven-publish
1个回答
0
投票

要为您的 Gradle 7.0+ 项目生成

pom.xml
文件,我建议您执行以下步骤:

1.将 maven-publish 添加到插件声明中

我认为你已经这样做了,但仅供参考:

plugins {
    id 'java'
    id 'maven-publish'
}

2.定义出版物

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            groupId = 'com.github.tcsizmadia'
            artifactId = 'gradle-sandbox'
            version = '1.0-SNAPSHOT'

            pom {
                name = 'Gradle Sandbox'
                description = 'Sandbox Project for Gradle Builds'
            }
        }
    }
}

确保根据您的需求自定义定义(

groupId
artifactId
等)。有关参考,请参阅Maven Publish Plugin 的文档

3.创建一个任务来重命名 pom.xml(可选)

作为一项好有功能,您可以添加任务来重命名和复制生成的

pom.xml
文件。

tasks.register('renamePom') {
    doLast {
        def pomFile = file("${layout.buildDirectory.get().asFile}/publications/mavenJava/pom-default.xml")
        if (pomFile.exists()) {
            pomFile.renameTo(file("${layout.buildDirectory.get().asFile}/pom.xml"))
        }
    }
}

这里,我指定了一个任务,将默认的

build//publications/mavenJava/pom-default.xml
复制到
build/pom.xml
。请根据需要随意修改。

4.使用 pom.xml 生成完成构建

这不是强制性的,但如果您希望在构建时生成

pom.xml
,请将其附加到您的
build.gradle
文件中:

generatePomFileForMavenJavaPublication.finalizedBy(renamePom)
build.finalizedBy generatePomFileForMavenJavaPublication

如果您跳过此步骤,您可以为您的项目发布生成pom.xml:

./gradlew generatePomFileForMavenJavaPublication

一个简约的完整示例

plugins {
    id 'java'
    id 'maven-publish'
}

group = 'com.github.tcsizmadia'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
    useJUnitPlatform()
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            groupId = 'com.github.tcsizmadia'
            artifactId = 'gradle-sandbox'
            version = '1.0-SNAPSHOT'

            pom {
                name = 'Gradle Sandbox'
                description = 'Sandbox Project for Gradle Builds'
            }
        }
    }
}

tasks.register('renamePom') {
    doLast {
        def pomFile = file("${layout.buildDirectory.get().asFile}/publications/mavenJava/pom-default.xml")
        if (pomFile.exists()) {
            pomFile.renameTo(file("${layout.buildDirectory.get().asFile}/pom.xml"))
        }
    }
}

generatePomFileForMavenJavaPublication.finalizedBy(renamePom)
build.finalizedBy generatePomFileForMavenJavaPublication
© www.soinside.com 2019 - 2024. All rights reserved.