comment publier un projet qui dépend d’un projet SNAPSHOT tiers dans maven

Je voudrais publier un projet de cliché ‘foo-1.0-SNAPSHOT’ en utilisant le plugin de publication de maven. Le projet dépend d’un module tiers “bar-1.0-SNAPSHOT” qui n’est pas encore sorti. J’utilise l’option ‘allowTimestampedSnapshots’ dans le fichier pom.xml de mon projet pour autoriser les instantanés horodatés, mais je suppose que le module (bar) tiers n’est pas horodaté à moins que je le construise lui-même.

Existe-t-il un moyen de libérer le projet foo indépendamment des projets SNAPSHOT dépendants et sinon comment pourrais-je append un horodatage au projet tiers?

La réponse courte est la suivante : la longue réponse est que vous pouvez contourner le problème.

La seule façon dont je me suis débrouillé dans le passé est de bifurquer efficacement la bibliothèque tierce et de couper une version moi-même. Ceci est bien sûr 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 une source fermée. Un itinéraire plus facile peut-être pour approcher la 3ème partie et leur demander de couper une version.

Une autre option peut être de copier leur pom (assurez-vous qu’il n’a pas d’instantané) de modifier les informations de version et d’installer manuellement le pom et l’artefact dans votre référentiel.

Le problème est allowTimestampedSnapshots nom du paramètre allowTimestampedSnapshots , il se trouve dans la documentation, mais la source du plug-in utilise un nom de paramètre différent dans expression – ignoreSnapshots .

Il suffit donc d’utiliser -DignoreSnapshots=true et l’objective de préparation du plug-in de la version ignorera les dépendances des instantanés.

Utiliser l’option maven-release-plugin

 -DignoreSnapshots=true 

au lieu de

 -DallowTimestampedSnapshots=true 

aidé dans mon cas, cela permettra d’utiliser des dépendances avec la version d’instantané pour préparer et exécuter une version.

Cette option doit être gérée avec précaution, car l’utilisation de versions instantanées dans une version peut interrompre ultérieurement votre publication, si la dépendance aux instantanés est mise à jour, ce qui, dans des cas normaux, n’est pas ce que vous souhaitez.

La réponse précédente suggérait de changer l’identifiant du groupe et de l’artefact … ne le faites pas car maven ne le reconnaîtra pas plus tard comme artefact lorsque cette dépendance sera publiée et vous vous retrouverez avec deux copies sur le chemin de 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’organisation] – [svn version je l’ai tirée de] donc je reçois quelque chose comme 1.0-SONATYPE-3425. En utilisant svn rev, je peux toujours tirer la source à nouveau 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 – J’ai blogué à ce sujet il y a quelque temps.

Installez simplement le pot avec un pom que vous possédez. Je change généralement l’ID de groupe et d’artefact pour indiquer clairement qu’il ne s’agit pas de la version officielle, mais c’est généralement le meilleur moyen de résoudre votre problème.