2017-10-03 3 views
0

J'ai une version multi-projet (version 2.1 !!) composée de projets non-java.Déploiement de Nexus et de FlatDir sans plugin java, ear ou war

Je voudrais déployer les artefacts générés (fichiers .tar.gz) vers un Nexus et également vers un répertoire.

Actuellement je définis les dépôts dans la racine build.gradle dans le bloc repositories et également à nouveau pour chaque sous-projet dans un bloc repositories à l'intérieur du subprojects dans le fichier racine build.gradle.

J'applique le plugin base au projet racine et le plugin maven-publish à tous les sous-projets qui ont des artefacts à déployer.

J'ai essayé de suivre les instructions ici:

mais pas chose a fonctionné. :-(

Voici ce que je fais.

... 
# apply the maven-publish plugin only to sub-projects that produce artifacts that should be uploaded. 
apply plugin: 'maven-publish' 

publishing { 
    publications { 
     tarFiles (MavenPublication) { 
      artifact compressTar 
     } 
    } 

    repositories { 
     add rootProject.repositories.fsShare 
     add rootProject.repositories.nexusDeploy 
    } 
} 
... 

Le compressTar est mon habitude tâche Tar qui crée les objets que je veux télécharger

Quand j'exécute ./gradlew publishTarFilesPublicationToNexusDeployRepository je reçois l'erreur suivante:

Execution failed for task ':mySubProject:publishTarFilesPublicationToNexusDeployRepository'. 
> Failed to publish publication 'tarFiles' to repository 'nexusDeploy' 
    > Failed to retrieve remote metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml from/to remote (https://myProject.nexus.url:443/nexus3/repository/builds/): Could not get resource 'myRootProject/mySubProject/0.0.0.0-SNAPSHOT/maven-metadata.xml' 

Lorsque j'exécute uploadArchives, la tâche réussit, mais rien téléchargé en tout lieu et de la sortie, elle ressemble à la tâche uploadArchives est seulement exécutée pour les sous-projets qui n'ont pas eu l'application maven-plugin.

Quelle est la bonne façon de procéder? Quels plugins devrais-je appliquer quand/où?

+1

Qu'est-ce qui n'a pas fonctionné? Quelles sont les erreurs/est la sortie de gradle en cours d'exécution? – Opal

Répondre

0

Apparemment, il y avait deux «problèmes au travail» non liés ici.

Problème 1): Je n'ai pas pu publier Nexus et a obtenu un Failed to retrieve remote metadata -erreur:

Réponse 1): Je tentais de publier un « Snapshot » à un référentiel qui a été configuré pour ne pas accepter " SNAPSHOT "construire. Renommer la version de construction de 1.2.3.4-SNAPSHOT à toute autre chose (par exemple 1.2.3.4-SNAPSHOT-dev ou plus raisonnable 1.2.3.build4`) a bien fonctionné.

Problème 2) La publication dans le référentiel 'flatDir' ne fonctionnait pas. Le plugin maven-publish n'a pas créé la tâche de publication pour cela.

Réponse 2) Pour utiliser maven-publish pour publier dans un répertoire, flatDir n'est apparemment pas reconnu comme référentiel dans lequel le plugin maven-publish peut publier.Définir le référentiel 'répertoire' comme suit a bien fonctionné:

maven { 
    name "fsShare" 
    url "/share/pkg" 
}