22

Nous utilisons Hudson et le maven-release-plugin pour réaliser les versions de publication. Maintenant, j'ai un projet qui contient un assembly qui rassemble tous les composants nécessaires, puis les empaquette dans un paquet .tar.gz avec la structure de répertoire souhaitée. Maintenant j'essaye d'obtenir le release-plugin pour déployer ce paquet à notre dépôt de Maven pendant la libération: accomplissez l'objectif, mais seulement les choses standard (sources, javadoc, POM) sont déployées.Déploiement du package d'assemblage avec maven-release-plugin

J'ai déjà lié l'objectif d'assemblage à la phase du package maven, et le .tar.gz est généré au cours de la version, mais pas téléchargé dans le référentiel. Des allusions à ce que je fais mal ici?

Voici la configuration plug-in de montage:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-4</version> 
    <configuration> 
     <descriptors> 
     <descriptor>src/main/assembly/distribution.xml</descriptor> 
     </descriptors> 
     <finalName>${pom.artifactId}-${pom.version}</finalName> 
     <appendAssemblyId>false</appendAssemblyId> 
     <tarLongFileMode>warn</tarLongFileMode> 
    </configuration> 
    <executions> 
     <execution> 
      <id>dist-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>assembly</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

La commande Je cours pour construire une version est

mvn release:prepare release:perform release:clean 
+0

Peut-être que si vous nous montrer le code ou le code obscurcie nous pourrions être en mesure de vous aider – ant

Répondre

33

Pendant ce temps, j'ai trouvé 2 façons de faire ce que je voulais.

Le maven-build-aide-plugin permet d'ajouter des entrées supplémentaires à la liste des objets qui doivent être déployés:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
      <execution> 
      <id>attach-distribution</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>target/${pom.artifactId}-${pom.version}.tar.gz</file> 
        <type>tar.gz</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

L'autre est aussi simple que cela et quelqu'un sur la liste de diffusion maven-utilisateur a souligné cela. Utilisation simple de l'assemblage: un seul but au lieu de l'assemblage: assemblage. De cette façon, l'artefact généré est téléchargé dans le référentiel pendant la phase de déploiement.

<execution> 
     <id>dist-assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> <!-- that's all :) --> 
     </goals> 
    </execution> 
+0

Dommage que le plugin ne vous permette pas de redéfinir l'identifiant de l'artefact – Adam

1

Déploiement des fichiers ne fait pas partie du plugin version, mais du plugin deploy (release ne déploie pas les éléments n'importe où par lui-même mais vous pouvez configurer le plugin deploy à appeler lors d'une release).

Normalement, le plugin de déploiement déploiera tous les artefacts vers le référentiel distant, mais les assemblys ne sont pas des artefacts; Maven ne peut en aucun cas utiliser les archives .tar.gz dans son dépôt, il n'est donc pas logique de les déployer en premier lieu.

Si vous insistez pour copier des fichiers inutiles dans le référentiel, vous devez utiliser deploy:deploy-file (see the docs) pour déployer un fichier manuellement et configurer le plugin avec une exécution pour l'invoquer lors de l'étape de publication. Mais je déconseille encore.

Ce que vous cherchez probablement, c'est un moyen de télécharger un assemblage quelque part automatiquement. Je ne suis pas au courant d'un plugin qui fait cela.

+0

Thx, c'était la façon dont j'étais au moment, mais je ne l'ai pas travailler en ce moment. Mais selon toutes les infos que j'ai trouvées qui semblent être le (seulement?) Moyen d'aller si on veut télécharger des fichiers .tar.gz dans un référentiel. –

+0

insister sur la copie de fichiers inutiles dans le repo-maven n'est pas le seul outil pour utiliser un référentiel. Les fichiers * .tar.gz sont utilisés par de nombreux autres outils de packaging, par ex. apt, marionnette etc – Adam

+0

@Adam mais ces outils ont leurs propres dépôts et ne peuvent souvent pas utiliser les dépôts Maven. Il serait donc judicieux de télécharger vers un dépôt de marionnettes mais pas vers un repo Maven. –