web-dev-qa-db-fra.com

Comment libérer un projet qui dépend d'un projet d'instantané tiers dans Maven

je souhaite publier un projet d'instantané 'FOO-1.0-Snapshot' à l'aide du plug-in Maven de version. Le projet dépend d'un module de 3ème partie 'bar-1.0-instantané' qui n'est pas encore publié. J'utilise l'option "allowtistampedsnapshots" dans le pom.xml de mon projet pour permettre des instantanés temporistampés, mais je suppose que le module tiers (bar) n'est pas chronométré à moins que je ne le construise moi-même comme Maven se plaint toujours de dépendances instructives.

Existe-t-il un moyen de libérer le projet FOO, quels que soient les projets instantanés dépendants et, sinon, pourrais-je ajouter un horodatage au 3ème projet?

50
Christian

La réponse courte est voir la réponse suivante .... La réponse longue est que vous pouvez travailler autour de lui.

La seule façon dont j'ai été excitée dans le passé consiste à fourrer efficacement la bibliothèque tierce et à couper une libération moi-même. Bien sûr, cela est plus facile à dire qu'à faire et est tout simplement difficile si la bibliothèque est grande et complexe et impossible si la bibliothèque tierce est fermée. Une route plus facile peut-être pour approcher la tierce partie et leur demander de réduire une libération.

Une autre option peut être de copier leur POM (s'assurer qu'elle n'a pas de instantané) Modifiez les informations de version et installez manuellement le POM et l'artefact de votre référentiel.

9
Gareth Davis

Le problème est avec le nom de paramètre allowTimestampedSnapshots, c'est dans la documentation, mais la source du plugin utilise un nom de paramètre différent dans l'expression - ignoreSnapshots.

Alors utilisez simplement -DignoreSnapshots=true et l'objectif préalable du plugin de version ignorera les dépendances instantanées.

149
Stevo Slavić

Utilisation de l'option de plug-in Maven-Livraison

-DignoreSnapshots=true

à la place de

-DallowTimestampedSnapshots=true

dans mon cas, cela permettra d'utiliser des dépendances avec une version instantanée pour préparer et effectuer une libération.

Cette option doit être traitée très soigneusement, car l'utilisation de versions d'instantané dans une version peut ensuite casser votre version, si la dépendance instantanée est mise à jour, ce qui n'est pas ce que vous voulez.

17
Oleg Mayevskiy

La réponse précédente a suggéré de modifier le groupe et l'identifiant d'artefact ... Ne faites pas cela comme Maven ne le reconnaîtra pas comme le même artefact plus tard, lorsque cette dépendance est libérée et que vous vous retrouverez avec deux copies sur la classe. Ma méthode préférée est de ne changer que la version et je ferai quelque chose comme: [Version originale] - [Mon nom d'org] - [Version SVN Je l'ai tirée de] alors je reçois quelque chose comme 1.0-Sonatype-3425. En utilisant le SVN REV, je peux toujours retirer la source et la corriger si nécessaire et savoir exactement ce que j'utilise sans tirer la source entière dans mon propre SVN.

Mise à jour - i blogué à ce sujet un moment de retour.

6
Brian Fox