Сборка Gradle завершается неудачно из-за зависимости от avro-инструментов

#maven #gradle #intellij-idea #build.gradle

#знаток #грейдер #intellij-идея #сборка.сортировка

Вопрос:

Я пытался преобразовать проект maven в сборку класса. Одна из зависимостей в POM.xml предназначен для avro-инструментов, как показано ниже :

 lt;dependencygt;  lt;groupIdgt;org.apache.avrolt;/groupIdgt; lt;artifactIdgt;avro-toolslt;/artifactIdgt; lt;versiongt;1.10.2lt;/versiongt; lt;/dependencygt;  

При запуске gradle init в проекте gradle создает файл build.gradle из pom.xml со следующим в качестве зависимости : группа реализации: «org.apache.avro», название: «avro-инструменты», версия:»1.10.0″

Однако при запуске сборки я получаю следующую ошибку :

 Could not find avro-mapred-1.10.2-hadoop2.jar (org.apache.avro:avro-mapred:1.10.2).  Searched in the following locations:  https://repo.maven.apache.org/maven2/org/apache/avro/avro-mapred/1.10.2/avro-mapred-1.10.2-hadoop2.jar  Possible solution:  - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html  

Если та же сборка выполняется в maven, сборка работает нормально.

Редактировать :

Полный файл build.gradle :

 plugins {  id 'java' }  group 'org.example' version '1.0-SNAPSHOT'  repositories {  mavenCentral() }    dependencies {  implementation group: 'org.scala-lang', name: 'scala-library', version:'2.12.6'  implementation group: 'org.apache.spark', name: 'spark-core_2.12', version:'2.4.1'  implementation group: 'org.apache.spark', name: 'spark-yarn_2.12', version:'2.4.1'  implementation group: 'org.apache.spark', name: 'spark-sql_2.12', version:'2.4.1'  implementation group: 'org.apache.spark', name: 'spark-hive_2.12', version:'2.4.1'  implementation group: 'org.apache.spark', name: 'spark-avro_2.12', version:'2.4.1'  implementation group: 'com.typesafe', name: 'config', version:'1.4.1'  implementation group: 'com.sun.mail', name: 'javax.mail', version:'1.5.6'  implementation group: 'org.apache.avro', name: 'avro-tools', version:'1.10.2'  implementation group: 'com.typesafe.play', name: 'play-json_2.12', version:'2.9.2'  testImplementation group: 'junit', name: 'junit', version:'4.12'  testImplementation group: 'org.scalatest', name: 'scalatest_2.12', version:'3.0.5'  testImplementation group: 'org.specs2', name: 'specs2-core_2.12', version:'4.2.0'  testImplementation group: 'org.specs2', name: 'specs2-junit_2.12', version:'4.2.0'  testImplementation group: 'org.scalatestplus', name: 'mockito-3-4_2.12', version:'3.2.4.0'  testImplementation group: 'org.mockito', name: 'mockito-core', version:'3.4.2'  testImplementation group: 'org.mockito', name: 'mockito-inline', version:'4.0.0'  testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'  testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'  }  test {  useJUnitPlatform() }  

Редактировать : Выяснил проблему, это были не только avro-инструменты, но и инструменты avro и плагин spark-core 2.12, который вызывал конфликт зависимостей. avro-tools 10.2 ссылается на avro-mapred 1.10.2 как на переходную зависимость, в то время как spark-core 2.12 ссылается на avro-mapred 1.8.2 как на зависимость. Кто-нибудь знает, как это решить?

Комментарии:

1. avro-mapred это не то же avro-tools самое, что . Убедитесь, что в сценарии сборки определены правильные идентификаторы goupId и artifactId. Вырезанный implementation group: 'org.apache.avro', name: 'avro-tools', version: '1.10.2' из вашего Maven отлично работает для меня в Gradle.

2. @Andrey Я добавил свой полный файл сборки в ответ. Я использую идею intellij, и версия gradle-7.1. Проблема все еще сохраняется