如何在 Gradle 7 中抑制 POM 和 IVY 相关警告?

iso*_*tel 2 artifactory gradle

升级到 Gradle 7 后,我收到许多警告,例如:

Cannot publish Ivy descriptor if ivyDescriptor not set in task ':myProject:artifactoryPublish' and task 'uploadArchives' does not exist.
Cannot publish pom for project ':myProject' since it does not contain the Maven plugin install task and task ':myProject:artifactoryPublish' does not specify a custom pom path.
Run Code Online (Sandbox Code Playgroud)

artifactoryPublish 任务运行良好。

我的 Gradle 脚本:

buildscript {
    repositories{
        maven {
            url = '...'
            credentials {
                username '...'
                password '...'
            }
            metadataSources {
                mavenPom()
                artifact()
            }
        }
    }

    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.24.12"
    }
}

apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin

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

group = '...'

artifactory {
    contextUrl = '...'
    publish {
        repository {
            repoKey = '...'
            username = '...'
            password = '...'
        }
        defaults {  
            publishConfigs('archives')  
            publishIvy = false 
            publications("mavenJava")       
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何禁用这些警告?

yah*_*avi 6

看起来您混合了旧的 Gradle 发布配置方法和新的 Gradle 发布方法。

您应用了maven-publish插件,该插件允许创建出版物。在 中artifactory.default,您按预期添加了“mavenJava”发布。

但是,您的 build.gradle 文件中不存在存档发布配置。基本上,发布配置是由旧版Maven插件创建的。配置的mavenJava发布与发布配置的作用相同archives,因此所有 JAR 都会按预期发布。

要删除您看到的警告消息,请删除publishConfigs('archives')from artifactory.default 子句:

artifactory {
    publish {
        defaults {  
            publishConfigs('archives') // <-- Remove this line
            publishIvy = false 
            publications("mavenJava")       
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

阅读更多:

  1. Gradle Artifactory 插件文档
  2. 例子