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