3

Я использую Maven с моим проектом Android, а также с Android-maven-plugin. В моем pom.xml файл проекта я объявляю зависимость так:Неразрешенная зависимость андроида от maven при создании в IntelliJ

<dependency> 
    <groupId>com.viewpagerindicator</groupId> 
    <artifactId>library</artifactId> 
    <version>2.4.1</version> 
    <type>apklib</type> 
</dependency> 

ViewPagerIndicator имеет зависимость от Android 4.1.1.4, который находится на Maven Центральной here. Однако, я не строю с Android 4.1.1.4, я построю на 4.2.2 r2, которая объявлена ​​как так:

<dependency> 
    <groupId>android</groupId> 
    <artifactId>android</artifactId> 
    <version>4.2.2_r2</version> 
</dependency> 

Этот артефакт находится не на Maven Central, я использую maven-android-sdk-deployer к нажмите артефакты Android в мое репо.

Если я открою свой терминал и построю с maven, проблем нет. Проблема в том, что я импортирую свой проект в IntelliJ и пытаюсь построить. Настройки модуля (правильно) жалуются, что путь к зависимости Android 4.1.1.4 в модуле apklib ViewPagerIndicator нарушен.

Я проверил папку .m2/repository для флеш-накопителя Android 4.1.1.4, и для нее нет даже папки, что означает, что Maven никогда не скачал ее. Я предполагаю, что это имеет какое-то отношение к тому, как работает maven-android-плагин, когда вы строите Maven, и как работает IntelliJ.

Я знаю, что могу просто взять банку и развернуть ее сам вручную, но я ищу лучшее решение, поэтому новым членам моей команды нужно только захватить исходный код и больше ничего не делать для создания проекта. Я уже настроил Nexus для команды, поэтому нам не нужно вручную развертывать сторонние банки и запускать развертыватель sdk на каждой машине. Я хотел бы иметь возможность просто передать новому разработчику источник, и они могут просто работать с ним.

ответ

1

Как это работает хорошо для нас (в сочетании с Maven-андроида-СДК-Deployer:

<dependency> 
    <groupId>com.viewpagerindicator</groupId> 
    <artifactId>library</artifactId> 
    <version>${viewpagerindicator.version}</version> 
    <type>apklib</type> 
    <exclusions> 
     <exclusion> 
      <groupId>com.google.android</groupId> 
      <artifactId>android</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>com.google.android</groupId> 
      <artifactId>support-v4</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Мы также строим с IntelliJ Обычно, просто открыв файл pom.xml и сказать да. к «Хочет ли вы открыть это как проект?».

+0

Если я пытаюсь исключить зависимости Android, которые я не могу построить, все классы в библиотеке ViewPagerIndicator, у которых есть зависимости от Android, жалуются. –

+0

У вас есть зависимости в вашем файле pom.xml в библиотеке поддержки Android? ' android.support совместимости v4 ' –

+0

Да, но перечисленные как это: ' com.google.андроид поддержка-v4 r13 ' –

0

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

  1. Импортируйте проекты maven в intellij
  2. Откройте настройки модуля apklib и добавьте в модуль явные банки зависимости (android, support ...). Не экспортируйте эту зависимость. Вы также можете установить предоставленную область.

Это работает для меня.