Временные зависимости проекта библиотеки библиотеки Android освобождают тип AAR

Я работаю над проектом, который включает в себя два проекта библиотеки Android. Когда я загружаю эти библиотеки в мой Maven repo (Nexus), сгенерированный pom не включает элемент <type>aar</type> в зависимости.

Вот мое дерево зависимостей

 * App1 \ * lib1 |\ | * lib2 * Other libs 

Вы можете видеть на этой диаграмме, что мое app зависит от lib1 , которое зависит от lib2 . Обе библиотеки являются библиотечными проектами для Android, таким образом, AAR.

Lib1 / build.gradle

 apply plugin: 'com.android.library' apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle' android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion 20 versionCode 1 versionName "1.0" } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) provided project(':lib2') compile 'com.squareup.picasso:picasso:2.3.3' } 

Lib2 / build.gradle

 apply plugin: 'com.android.library' apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle' android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion 19 versionCode 1 versionName '1.0' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:19.+' compile 'com.squareup.retrofit:retrofit:1.6.1' compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' compile 'com.squareup.okhttp:okhttp:2.0.0' } 

Обратите внимание, что Lib1 включает Lib2 в качестве зависимости project() .

Теперь, когда я использую это, используя отличный плагин Crystal-Mvn-Push Криса Банеса, все работает так, как ожидалось. Есть только одна странность, которую я замечаю в сгенерированном pom.xml.

 <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>lib2</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> ... </dependencies> 

Обратите внимание, что плагин mavenDeployer не использовал элемент <type>aar</type> в зависимости от того, когда он сгенерировал pom.

В моем проекте приложения (который является проектом maven) у меня есть эта зависимость:

 <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>lib1</artifactId> <version>0.0.1-SNAPSHOT</version> <type>aar</type> </dependency> ... </dependencies> 

При попытке построить это с Maven, я получаю следующую ошибку.

 Could not resolve dependencies for project com.example:app:apk:1.0.0-SNAPSHOT: The following artifacts could not be resolved: com.example:lib2:jar:0.0.1-SNAPSHOT 

Обратите внимание, как он ищет версию библиотеки jar. Я полагаю, поскольку плагин mavenDeployer не генерирует <type>aar</type> в списке зависимостей сгенерированного pom, maven по умолчанию ищет банку.

Кто-нибудь знает, как создавать проекты библиотеки Android, которые включают временные зависимости с Gradle?

Solutions Collecting From Web of "Временные зависимости проекта библиотеки библиотеки Android освобождают тип AAR"

Просто добавьте aar в pom с любым текстовым редактором. После этого откройте консоль в корне проекта (где находится pom) и запустите «mvn clean install». Артефакт будет создан и развернут на ваш maven-репо.

В любом случае гораздо проще создавать aar-библиотеки с Maven. Просто создайте проект Maven, используя любой архетип библиотеки Android. (De.akquinet хороши, но вы должны использовать версию плагина между 3.8.2 и 3.9, http://mvnrepository.com/artifact/de.akquinet.android. Архетипы ). Просто создайте проект, добавьте библиотеки и запустите команду «mvn clean install», чтобы установить их в свой локальный каталог maven. После этого просто используйте их как обычные зависимости aar.

Попробуйте град-ярость. Он исправляет все это … эмм … прочее. В частности, недействительные и / или неточные погрешности, которые генерируются градиентом. Подтверждено рабочее решение для публикации в sonatype oss / maven central. Никаких ручных изменений pom, поддержки подписи pgp и многого другого.

Сайт: https://github.com/gradle-fury/gradle-fury

В частности, вам нужен скрипт градации поддержки maven, который выполняет всю работу за вас. Все вещи, которые обычно находятся в помпе, хранятся в файлах gradle.properties. Также поддерживаются варианты android, военные файлы (скоро исправления для distZip), javadocs и исходные банки и многое другое.

Отказ от ответственности, я работаю над этим

Изменить: еще один лакомый кусочек информации. Хотя ярость делает инъекционные зависимости и правильную типизацию для AAR-библиотек, плагин gradle-android (материал google делает) не соблюдает раздел зависимости и игнорирует его. В основном транзитивные зависимости проектов AAR не поддерживаются. Не знаю, почему