Arbeiten an einer Android-Bibliothek mit Gradle (v 1.7) als Bauwerkzeug, habe ich das Maven-Plugin verwendet und konfiguriert die Aufgabe uploadArchives zu veröffentlichen sowohl Release-und Debug-Version von die lib zum lokalen maven repository.
Der folgende Code funktioniert ok:Gradle und Android: Pom-Konfiguration mit mehreren Maven-Artefakte Veröffentlichung
// [...]
apply plugin: 'android-library'
// [...] nothing unusual
/*
* Define name of the apk output file (build/apk/<outputFile>)
*/
android.libraryVariants.all
{
variant ->
def outputName = "MyModule-${android.defaultConfig.versionName}-${variant.baseName}.aar"
variant.outputFile = new File("$buildDir/libs", outputName)
}
/*
* Publish to maven local repo (older style maven plugin)
* Used while android plugin is not fixed regarding maven-publish plugin
*
* type command "gradle uploadArchives" to publish the module into the
* local .m2 repository
*/
apply plugin: 'maven'
android.libraryVariants.all
{
variant ->
// add final apk to the 'archives' configuration
project.artifacts
{
archives variant.outputFile
}
}
def localRepoPath = "file://" + new File(
System.getProperty("user.home"), ".m2/repository").absolutePath
uploadArchives
{
repositories.mavenDeployer
{
repository(url: localRepoPath)
addFilter('debug') { artifact, file ->
artifact.name.contains("debug")
}
addFilter('release') { artifact, file ->
artifact.name.contains("release")
}
pom('debug').groupId = 'com.company'
pom('release').groupId = 'com.company'
pom('debug').artifactId = 'id'
pom('release').artifactId = 'id'
pom('debug').version = android.defaultConfig.versionName + "d"
pom('release').version = android.defaultConfig.versionName
pom.packaging = 'aar'
}
}
uploadArchives.dependsOn(assemble)
, jedoch beim Versuch, die pom Konfiguration Refactoring:
uploadArchives
{
repositories.mavenDeployer
{
repository(url: localRepoPath)
addFilter('debug') { artifact, file ->
artifact.name.contains("debug")
}
addFilter('release') { artifact, file ->
artifact.name.contains("release")
}
pom.groupId = 'com.company'
pom.artifactId = 'id'
pom('debug').version = android.defaultConfig.versionName + "d"
pom('release').version = android.defaultConfig.versionName
pom.packaging = 'aar'
}
}
artifactId wie der Name der Ausgabedatei erweitert wird, und groupId als der Name des Wurzelverzeichnisses; Das gibt schlechte Wege im Maven Repo.
Ich würde gerne wissen, warum das ist, und vielleicht, wenn es einen saubereren Weg zu erreichen, was ich brauche.
In meinem Projekt hatte ich die Anforderung, den Ausgang '.aar' umzubenennen. Deshalb habe ich 'archivesBaseName' in' build.gradle' gesetzt, das für die 'artifactId' verwendet wird. Vielleicht hilft das. – JJD
Haben Sie das herausgefunden? –
@YuchenZhong Leider nicht, da diese Arbeit Teil eines Kurzzeitpraktikums war. Ich weiß nicht, wer das Projekt übernommen hat und wie es seitdem gehandhabt wurde. – mklj