Android Bibliothèque Gradle version JAR
Comment puis-je publier Pot d'emballage de android-library
projet?
J'ai trouvé, classes.jar est situé sous build/bundles/release/classes.jar
et je suppose que c'est correct Pot paquet (contient *.class
fichiers).
Est-il une manière officielle, à la libération de la bibliothèque que le POT au lieu de l'AAR ?
Modifier
J'utilise Gradle pour libérer Maven objets, et j'aimerais sortir BOCAL avec de l'AAR paquet. Donc le POT avec la signature, md5, manifeste, ...
basé sur https://chris.banes.me/2013/08/27/pushing-aars-to-maven-central/
apply plugin: 'maven'
apply plugin: 'signing'
configurations {
archives {
extendsFrom configurations.default
}
}
def sonatypeRepositoryUrl
if (isReleaseBuild()) {
println 'RELEASE BUILD'
sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
} else {
println 'DEBUG BUILD'
sonatypeRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
}
if(!hasProperty('nexusPassword')) {
ext.set('nexusPassword', System.console().readPassword("\n\$ Type in password for Sonatype nexus account " + nexusUsername + ": "))
}
if(!signing.hasProperty('password')) {
ext.set('signing.password', System.console().readPassword("\n\$ Type in GPG key password: "))
}
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
pom.artifactId = POM_ARTIFACT_ID
repository(url: sonatypeRepositoryUrl) {
authentication(userName: nexusUsername, password: nexusPassword)
}
pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL
scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}
licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}
developers {
developer {
id "loopj"
name "James Smith"
}
developer {
id "smarek"
name "Marek Sebera"
}
}
}
}
}
}
signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
}
task androidJavadocsJar(type: Jar) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
}
à l'aide de
task androidJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
}
sera forfait uniquement les fichiers java, pas compilé et lié avec android sdk
Vous devez vous connecter pour publier un commentaire.
Alors que je n'ai pas essayé de télécharger les artefacts avec un déploiement de Sonatype (ou même un repo), voici ce que j'ai réussi à venir avec il y a quelques semaines lorsque vous essayez d'aborder le même problème.
Puis exécutez la commande suivante:
gradle tasks
, seulement avecgradle tasks --all
. Merci encore!task.dependsOn variant.processJavaResources
ettask.from variant.processJavaResources.destinationDir
(désolé, pas pu travailler sur la façon de formater correctement)"jar${name.capitalize()}"
partie avec"jar${variant.name.capitalize()}"
pour rendre la tâche de compte pour le nom de saveur trop (levariant.name
est composé de deux buildType nom et productFlavor nom)Une autre façon de générer un jar à partir d'une bibliothèque de projet par le biais de gradle est comme suit:
Dans votre bibliothèque, en construire.gradle:
Ce que nous faisons ici, c'est juste de la copie de la classes.jar généré par l'Android plugin Gradle. Assurez-vous de regarder dans votre répertoire de compilation de ce fichier et voir si son contenu est dans la façon dont vous le souhaitez.
Puis exécutez le
makeJar
tâche et le pot va être dans la bibliothèque/build/libs/${jarName}
.jarL'aura de la classe des fichiers en fonction de votre configuration pour la libération. Si vous êtes d'affaiblir, puis les fichiers dans le pot sera masquée.
Tout simplement parce que les réponses précédentes ne correspondait pas à mes besoins, je partage mon délicat version pour générer un jar avec le projet des classes et de l'aar/jar dépendances.
Ce n'est PAS de gérer les types de builds /saveurs, mais peuvent être adaptées (c'est juste ok pour construire à construire-type de mise en liberté sans saveur).
Si jamais vous avez une solution plus intelligente ou la plus élégante de la solution, merci de partager!