Question

Je voudrais publier un projet de capture instantanée 'foo-1.0-SNAPSHOT' à l'aide du plugin maven release. Le projet dépend d'un module tiers 'bar-1.0-SNAPSHOT' qui n'est pas encore publié. 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 tiers (barre) n'est pas horodaté, à moins que je ne le construise moi-même, car maven se plaint toujours de dépendances non résolues de SNAPSHOT.

Y a-t-il un moyen de libérer le projet foo indépendamment des projets SNAPSHOT dépendants et si non comment puis-je ajouter un horodatage au projet tiers?

Était-ce utile?

La solution

La réponse courte est de voir la réponse suivante ... la réponse longue est que vous pouvez la contourner.

La seule façon dont je me sois débrouillé dans le passé est de créer efficacement une bibliothèque tierce et de créer 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 à source fermée. Un itinéraire plus facile peut-être d’approcher le tiers et de lui demander de couper un communiqué.

Une autre option consiste à copier leur pom (assurez-vous qu'il ne possède pas d'instantané), à modifier les informations de version et à installer manuellement le pom et l'artefact dans votre référentiel.

Autres conseils

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

Il suffit donc d'utiliser -DignoreSnapshots = true et l'objectif de préparation du plug-in de publication ignorera les dépendances des instantanés.

Utilisation de l'option maven-release-plugin

-DignoreSnapshots=true

au lieu de

-DallowTimestampedSnapshots=true

m'a aidé dans mon cas, cela permettra d'utiliser des dépendances avec la version d'instantané pour préparer et effectuer une release.

Cette option doit être manipulée avec précaution, car l’utilisation de versions d’instantanés dans une version peut ultérieurement casser votre version, si la dépendance d’instantané est mise à jour, ce qui, dans les cas normaux, ne correspond pas à vos souhaits.

La réponse précédente suggérait de changer le groupe et l'identifiant de l'artefact ... ne le faites pas car maven ne le reconnaîtra pas comme le même artefact plus tard lorsque cette dépendance sera libérée et vous obtiendrez 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'org] - [svn version je l'ai tiré de] donc j'obtiens quelque chose comme 1.0-SONATYPE-3425. En utilisant svn rev, je peux toujours extraire la source et la corriger si nécessaire et savoir exactement ce que j'utilise sans extraire l'intégralité de la source dans mon propre svn.

Mise à jour - I a blogué à ce sujet il y a quelque temps.

Installez simplement le pot avec un pom que vous possédez. Je modifie généralement le groupe et l'identifiant d'artefact pour préciser que ce n'est pas la version officielle, mais c'est généralement le meilleur moyen de résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top