Генерировать и использовать зависимость gradle без POM

#java #gradle #jar #publishing

#java #gradle #jar #публикация

Вопрос:

Я пытаюсь сгенерировать файл .jar моего проекта Gradle, но когда он создается с помощью публикации Maven, он также генерирует файл .pom.

Проблема в том, что у меня есть другой проект, который, когда он реализует эту зависимость, раньше он искал только .jar, а теперь он ищет .pom во всех остальных, что я хочу сделать, так это то, что проект прекращает генерировать .pom с помощью задачи «публикация» или что при его реализации прекращается поиск файлов .pom для работы других.

Вот код для генерации файла .jar в проекте Artifactory A с кодом в проекте B, который использует A и ищет .pom:

 publishing {
    publications {
        mavenJava(MavenPublication) {
              groupId = 'com.proteccion.myproject'
              artifactId = 'myproject-base'
              version = '1.0.1'
            from components.java
        }   
    }
    repositories {
        maven {
            name = 'artifactory'
            url 'https://url/artifactory/MyProject'
            credentials {
                username System.getenv("ARTIFACTORY_USER") 
                password System.getenv("ARTIFACTORY_PWD")  
            }
        }
    }
}

repositories {
    jcenter()
    maven {
        url 'https://url/artifactory/MyProject'
        credentials {
                    username System.getenv("ARTIFACTORY_USER") 
                    password System.getenv("ARTIFACTORY_PWD")  
                }
    }
}
  

Возможно, с помощью Gradle-эквивалента этого сегмента:

 publishing {
    publications {
        mavenJava(MavenPublication) {
              groupId = 'com.proteccion.myproject'
              artifactId = 'myproject-base'
              version = '1.0.1'
            from components.java
        }   
    }
  

Ответ №1:

Наконец-то это сработало для меня:

 metadataSources {
            artifact()
        }
  

Заставляет искать только файл jar.
Полная конфигурация:

 publishing {
publications {
    mavenJava(MavenPublication) {
          groupId = 'com.company.myproject'
          artifactId = 'myproject-base'
          version = '1.0.1'
        from components.java
    }   
}
repositories {
    maven {
        name = 'artifactory'
        url 'https://url/artifactory/MyProject'
        credentials {
            username System.getenv("ARTIFACTORY_USER") 
            password System.getenv("ARTIFACTORY_PWD")  
        }
    }
}
}

repositories {
jcenter()
maven {
    url 'https://url/artifactory/MyProject'
    credentials {
                username System.getenv("ARTIFACTORY_USER") 
                password System.getenv("ARTIFACTORY_PWD")  
            }
    metadataSources {
            artifact()
    }
}
}
  

Документация (пример 18):
https://docs.gradle.org/current/userguide/dependency_management.html

Ответ №2:

Пример 17. Репозиторий Maven, поддерживающий артефакты без метаданных

 repositories {
    maven {
        url "http://repo.mycompany.com/repo"
        metadataSources {
            mavenPom()
            artifact()
        }
    }
}