#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. Проблема все еще сохраняется