我正在将 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 7.0+ 项目生成
pom.xml
文件,我建议您执行以下步骤:
我认为你已经这样做了,但仅供参考:
plugins {
id 'java'
id 'maven-publish'
}
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 的文档
作为一项好有功能,您可以添加任务来重命名和复制生成的
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
。请根据需要随意修改。
这不是强制性的,但如果您希望在构建时生成
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