Я работаю над проектом, который включает в себя два проекта библиотеки Android. Когда я загружаю эти библиотеки в свой репозиторий Maven (Nexus), сгенерированный pom не включает элемент <type>aar</type>
в зависимость.
Вот мое дерево зависимостей
* App1
\
* lib1
|\
| * lib2
* Other libs
На этой диаграмме видно, что мой app
зависит от lib1
, который зависит от lib2
. Обе библиотеки являются проектами библиотек Android, то есть AAR.
Библиотека 1/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()
.
Теперь, когда я развертываю это с помощью отличного плагина gradle-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?