Как подавить предупреждения, связанные с POM и IVY, в Gradle 7?

#gradle #artifactory

Вопрос:

После обновления до 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.
 

Задача 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")       
        }
    }
}
 

Как отключить эти предупреждения?

Ответ №1:

Похоже, вы смешали старый метод настройки публикации Gradle и новый метод публикации Gradle.

Вы применили плагин maven-publish, который позволяет создавать публикации. В artifactory.default , вы добавили публикацию «Мавенджава», как и ожидалось.

Однако конфигурация публикации архивов не существует в вашем файле build.gradle. В основном конфигурации публикации создаются устаревшим плагином maven. Настроенная mavenJava публикация выполняет то же самое archives , что и конфигурация публикации, и поэтому все файлы JAR публикуются должным образом.

Чтобы удалить предупреждающие сообщения, которые вы видите, удалите publishConfigs('archives') предложение from artifactory.default:

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

Подробнее:

  1. Документация по плагину Gradle Artifactory
  2. Пример