warning - update gradle android studio
Agregar manualmente aar con el archivo de dependencia pom/iml (1)
1. Publicación
En su proyecto aar, agregue el plugin maven-publish
y agregue la configuración de plugin necesaria.
apply plugin: ''com.android.library''
apply plugin: ''maven-publish''
...
dependencies {
testCompile ''junit:junit:4.12''
compile ''com.android.support:appcompat-v7:23.1.1''
compile ''com.novoda:bintray-release:0.2.7''
}
...
publishing {
publications {
maven(MavenPublication) {
groupId ''com.example'' //You can either define these here or get them from project conf elsewhere
artifactId ''example''
version ''0.0.1-SNAPSHOT''
artifact "$buildDir/outputs/aar/app-release.aar" //aar artifact you want to publish
//generate pom nodes for dependencies
pom.withXml {
def dependenciesNode = asNode().appendNode(''dependencies'')
configurations.compile.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode(''dependency'')
dependencyNode.appendNode(''groupId'', dependency.group)
dependencyNode.appendNode(''artifactId'', dependency.name)
dependencyNode.appendNode(''version'', dependency.version)
}
}
}
}
//publish to filesystem repo
repositories{
maven {
url "$buildDir/repo"
}
}
}
Pocas cosas a tener en cuenta:
Estamos utilizando una publicación maven personalizada, por lo que debe definir lo que se publica con la cláusula de
artifact
Tenemos que generar el pom nosotros mismos, en el código anterior estoy usando todas las dependencias de configuración de compilación, es posible que desee asegurarse de que todas las configuraciones que le interesan estén cubiertas.
La ejecución de la gradle publish
se publicará en una estructura repo de maven en la carpeta repo
, que luego puede consumir desde un proyecto diferente.
2. Uso publicado .aar
En un proyecto Android diferente, para usar el aar publicado en el n. ° 1: en el nivel superior build.gradle:
allprojects {
repositories {
jcenter()
maven {
url "D:/full/path/to/repo"
}
}
}
agregue la ruta al repositorio anterior como un repositorio maven. Tenga en cuenta que puede que tenga que usar la ruta completa, porque $buildDir
tiene un valor diferente para este proyecto. En tu aplicación build.gradle:
dependencies {
...
other dependencies
...
compile (''com.example:example:0.0.1-SNAPSHOT@aar''){transitive=true}
}
transitive=true
es necesario para recuperar las dependencias transitivas del archivo pom.
Como no puedo usar un experto privado para compartir mi biblioteca, estaba pensando en compartir el aar e importar en otro proyecto. El problema surge cuando los archivos aar y jar no contienen ninguna dependencia. Así que una vez que importo manualmente el aar en Android Studio (usando Importar .JAR / .AA Package) no hay dependencia, y tengo que agregar manualmente todas las dependencias nuevamente. Ya generé un archivo pom a través de una tarea gradle, aunque no puedo encontrar ninguna forma de importarlo manualmente en el proyecto.
En el archivo build.gradle generado automáticamente por el "paquete Importar .JAR / .AA" está:
configurations.maybeCreate("default")
artifacts.add("default", file(''TestSample_1.0.0.aar''))
¿Hay alguna manera de agregar el archivo pom / iml también? algo como:
artifacts.add("default", file(''pomDependencies.xml''))