Maven отказывается загружать aar упакованную зависимость из удаленного репозитория

Я хочу использовать эту зависимость от android в моей программе java:

http://jcenter.bintray.com/com/o3dr/android/dronekit-android/2.9.0/ 

Поэтому я добавил все плагины и репозитории в файл maf maven:

 <repositories> <repository> <id>central</id> <name>bintray</name> <url>http://jcenter.bintray.com</url> <!--<snapshots>--> <!--<enabled>false</enabled>--> <!--</snapshots>--> </repository> </repositories> <pluginRepositories> <pluginRepository> <!--<snapshots>--> <!--<enabled>false</enabled>--> <!--</snapshots>--> <id>central</id> <name>bintray-plugins</name> <url>http://jcenter.bintray.com</url> </pluginRepository> </pluginRepositories> <build> <plugins> <plugin> <groupId>com.simpligility.maven.plugins</groupId> <artifactId>android-maven-plugin</artifactId> <version>4.1.0</version> <extensions>true</extensions> <configuration> <sign> <debug>false</debug> </sign> </configuration> </plugin> ... 

Затем я добавляю зависимость в один и тот же файл:

  <dependency> <groupId>com.o3dr.android</groupId> <artifactId>dronekit-android</artifactId> <version>2.9.0</version> <type>aar</type> </dependency> 

Но ничего не происходит, maven игнорирует его, как будто его нет, если я импортирую его основной пакет в файл scala и создам его с помощью mvn clear install -U , я получаю эту ошибку:

[ERROR] /home/peng/git-drone/dronespike/src/main/scala/Main.scala:1: объект o3dr не является членом пакета com
[ERROR] import com.o3dr.android._
[ERROR] ^

Вопрос : Что мне делать, чтобы исправить эту проблему?

Solutions Collecting From Web of "Maven отказывается загружать aar упакованную зависимость из удаленного репозитория"

Используйте упаковку Android, например <packaging>apk</packaging> .

Если Maven не смог загрузить артефакт, он скорее пожаловался бы на жизненный цикл сборки. Проблема в том, что артефакт загружается, но не используется. aar не является стандартным артефактом Maven, поэтому Maven не знает, что с ним делать. Для этого требуется сторонний плагин с расширениями, следовательно, использование android-maven-plugin . Читая его документацию , у него есть некоторые требования к правильной работе. В частности, вы не использовали упаковку для Android, как указано здесь:

Использование поддерживаемой упаковки: apk, aar или apklib

Действительно, глядя на исходный код плагина, он проверяет упаковку Android перед добавлением чего-либо из aar в classpath.

В зависимости от требований вашей версии maven, в зависимости от того, с чем я столкнулся раньше, вам может потребоваться добавить конфигурацию для выпуска и моментального снимка. В моем случае я просто смог получить lib, как только я задал эти параметры:

 <repositories> <repository> <id>central</id> <name>bintray-plugins</name> <url>http://jcenter.bintray.com</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>com.o3dr.android</groupId> <artifactId>dronekit-android</artifactId> <version>2.9.0</version> <type>aar</type> </dependency> </dependencies> 

Без него зависимость не была загружена.

Если посмотреть на репозиторий bintray, где доступна зависимость, и проверить настройки репозитория с помощью параметра « Установить меня» , ваши координаты репозиториев не верны, они должны быть:

 <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>bintray-3d-robotics-maven</id> <name>bintray</name> <url>http://dl.bintray.com/3d-robotics/maven</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <snapshots> <enabled>false</enabled> </snapshots> <id>bintray-3d-robotics-maven</id> <name>bintray-plugins</name> <url>http://dl.bintray.com/3d-robotics/maven</url> </pluginRepository> </pluginRepositories> 

И действительно, эффективный файл цели доступен через URL-адрес:

 https://dl.bintray.com/3d-robotics/maven/com/o3dr/android/dronekit-android/2.9.0/ 

Который уважает URL-адрес репозитория плюс его координаты Maven (groupId, artifactId, version).


Также обратите внимание: не используйте повторно central идентификатор репозитория, если только не по какой-либо причине, иначе вы бы переопределили центральный (по умолчанию) репозиторий вашей сборки Maven, и все ваши зависимости (и плагины) были бы получены только с помощью нового объявленного.

Sbt-android может обрабатывать эту конфигурацию.

build.sbt

 androidBuildJar name := "yourproject" organization := "yourorganization" platformTarget := "android-24" libraryDependencies +="com.o3dr.android" % "dronekit-android" % "2.9.0" 

Проект / plugins.sbt

 addSbtPlugin("org.scala-android" % "sbt-android" % "1.6.7") 

При необходимости добавьте правила публикации и разрешения.