Gradle pas y compris les dépendances publiés pom.xml
J'ai un Gradle projet, je suis à l'aide de la maven-éditeur plugin à installer mon android bibliothèque de maven local et un repo maven.
Qui fonctionne, mais l'généré pom.xml ne pas inclure toutes les informations de dépendance. Est-il une solution afin d'inclure ces informations, ou suis-je forcé de revenir à la maven plugin et faire la configuration manuelle qui exige?
Des recherches, j'ai réalisé que je ne suis pas raconter la publication où les dépendances, je ne suis qu'à spécifier le type de sortie/artefact, j'ai donc besoin d'un moyen de relier cette MavenPublication
pour les dépendances, mais je n'ai pas encore trouvé comment le faire que dans la documentation.
------------------------------------------------------------ Gradle 1.10 ------------------------------------------------------------ Temps de construction: 2013-12-17 09:28:15 UTC Numéro de Build: aucun Révision: 36ced393628875ff15575fa03d16c1349ffe8bb6 Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.9.2 compilé le 8 juillet 2013 Ivy: 2.2.0 JVM: 1.7.0_60 (Oracle Corporation 24.60-b09) Système d'exploitation: Mac OS X 10.9.2 x86_64
Pertinent de construire.gradle sections
//...
apply plugin: 'android-library'
apply plugin: 'robolectric'
apply plugin: 'maven-publish'
//...
repositories {
mavenLocal()
maven {
name "myNexus"
url myNexusUrl
}
mavenCentral()
}
//...
android.libraryVariants
publishing {
publications {
sdk(MavenPublication) {
artifactId 'my-android-sdk'
artifact "${project.buildDir}/outputs/aar/${project.name}-${project.version}.aar"
}
}
repositories {
maven {
name "myNexus"
url myNexusUrl
credentials {
username myNexusUsername
password myNexusPassword
}
}
}
}
Généré pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example.android</groupId>
<artifactId>my-android-sdk</artifactId>
<version>gradle-SNAPSHOT</version>
<packaging>aar</packaging>
</project>
- 'maven-publisher plugin": entendez-vous le maven-publier plugin ?
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de contourner ce problème en utilisant le script ajouter les dépendances de la pom directement à l'aide de
pom.withXml
.Cela fonctionne pour mon projet, il peut avoir des conséquences imprévues dans d'autres.
*(MavenPublication)
bloc et toutes mes dépendances sont maintenant dans mon aar pom. De nombreux thxit.group
,it.name
pas être null ou indéterminée, de sorte qu'il ignore la valeur par défaut de la dépendance sur le répertoire lib dans android studio. Sans elle, gradle génère une défaillance de POM fichier et les accidents.implementation project ":myModule"
Dans mon cas, la version est marquée comme non spécifiée dans le résultat de l'pom.xml. Connaissez-vous un mécanisme pour obtenir le numéro de version dans ces situations?Je me suis mise à niveau C. Ross solution. Cet exemple va générer pom.xml avec des avec des dépendances de compilation de configuration et aussi avec compilation spéciale de type avec des dépendances, par exemple, si vous utilisez plusieurs dépendances pour le rejet ou la version de débogage (debugCompile et releaseCompile). Et aussi en ajoutant exlusions
uploadArchives
tâche il semble être à côté de lascope
attribut. Est-il un moyen d'inclure facilement que de votre code ci-dessus?def configurationNames = ["${variant.name}Compile", 'compile']
debugCompile et releaseCompile shoulb être ignorées, mais le nom de la configuration de la compilation, c'est que vous avez besoin à portée de l'attribut. Pour faire pom avec dependensies de toutes les étendues vous devez ajouter tous d'entre eux (runtime, etc.) dans ce tableau. Et dans la boucle juste vérifier si c'est pas debugCompile ou releaseCompile ajouter nœud de portée.exclusionNode.appendNode('scope', configurationName)
Avec gradle 3
implemention
a été introduit pour remplacercompile
.Utiliser ce lieu.
Kotlin DSL version de la accepté de répondre:
Je suppose que cela a quelque chose à voir avec la
from components.java
directive, comme on le voit dans le guide. J'ai eu un semblable de l'installation et il a fait la différence pour ajouter la ligne dans la publication de bloc:.jar
de sortie, mais pas pouraar
autant que je sache. Apparemment cassé par l'aar à l'heure actuelle (plugin gradle 1.2.2)aar
et un besoin de supprimer md5/sha fichiers en raison de écraséepom
build.gradle
fichier, vous allez voir ce message d'erreur lorsque vous essayez d'analyser le fichier:"Could not find property 'java' on SoftwareComponentInternal set."
2.1.0
aussi ne fonctionne pas pouraar
s. Est-il contourner?classifier
sur chacun d'eux pour éviter l'erreur, github.com/gradle/gradle/issues/1624#issuecomment-330821182. J'ai déclaré le classificateur pour les principaux bocal commedefault
et je suis à la fois les sources et les principaux pot publié!J'ai été en utilisant le
maven-publish
plugin pour la publication de monaar
de dépendance et en fait, je ne pouvais pas utiliser lemaven
tâche dans mon cas. J'ai donc utilisé lemavenJava
tâche fournie par lemaven-publish
plugin et utilisé comme suit.J'espère que cela aide quelqu'un qui cherche de l'aide sur la manière de publier les
aar
avecpom
fichier à l'aide de lamaven-publish
plugin.maintenant que la compilation est obsolète, nous devons avoir recours à la mise en œuvre.