Sto lavorando a un progetto che include due progetti di libreria Android. Quando carico queste librerie sul mio repository Maven (Nexus), il pom generato non include un elemento <type>aar</type>
nella dipendenza.dipendenze transitori progetto libreria Android allentate tipo AAR
Ecco il mio albero delle dipendenze
* App1
\
* lib1
|\
| * lib2
* Other libs
Si può vedere in questo diagramma che il mio app
dipende lib1
, che dipende lib2
. Entrambe le librerie sono progetti di librerie Android, quindi 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'
}
Notate come Lib1
include Lib2
come una dipendenza project()
.
Ora, quando lo utilizzo utilizzando l'eccellente plugin gradle-mvn-push di Chris Banes, tutto funziona come previsto. C'è solo una stranezza che noto nel pom.xml generato.
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>lib2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
...
</dependencies>
Si noti che il plugin mavenDeployer lasciato fuori l'elemento <type>aar</type>
in dipendenza, quando ha generato il pom.
Nel mio progetto app (che è un progetto Maven), ho questa dipendenza elencati:
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>lib1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>aar</type>
</dependency>
...
</dependencies>
Quando si cerca di costruire questo con Maven, ottengo l'errore seguente.
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
Nota come sta cercando una versione jar della libreria. Credo che, dal momento che il plugin mavenDeployer non sia stato generato con lo <type>aar</type>
nell'elenco delle dipendenze del pom generato, Maven è in via di definizione alla ricerca di un jar.
Qualcuno sa come costruire progetti di librerie Android che includono dipendenze temporanee con Gradle?
Lo stesso problema qui. – sarfata