50 votes

comment publier un projet qui dépend d'un projet d'instantané tiers dans maven

je voudrais diffuser un instantané du projet "foo-1.0-SNAPSHOT' à l'aide de maven version plugin. Le projet dépend de la 3e partie du module de bar-1.0-SNAPSHOT " qui n'est pas encore sorti. J'utilise l'option "allowTimestampedSnapshots" dans mon projet pom.xml pour permettre horodaté clichés mais je suppose que la 3ème partie du module (bar) n'est pas datées, à moins que je construis moi-même comme maven se plaint toujours qu'il suspens INSTANTANÉ dépendances.

Est-il un moyen de valider le projet foo quel que soit dépendante de l'INSTANTANÉ de projets et si non, comment pourrais-je ajouter un horodatage à la 3ème partie du projet?

151voto

Stevo Slavić Points 1160

Le problème vient du nom du 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 .

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.

19voto

Oleg Mayevskiy Points 41

en utilisant 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 de l'instantané pour préparer et effectuer une version.

cette option doit être gérée très attentivement, car l'utilisation de versions d'instantanés dans la version peut ultérieurement interrompre votre version, si la dépendance de l'instantané est mise à jour, ce qui n'est normalement pas ce que vous voulez.

9voto

Gareth Davis Points 16190

La réponse courte, c'est de voir la réponse suivante.... la réponse longue est que vous pouvez travailler autour d'elle.

Le seul moyen que j'ai affronté dans le passé, c'est effectivement de la fourche de la 3e partie de la bibliothèque et couper un communiqué de moi-même. Bien sûr, cela est plus facile à dire qu'à faire et il est tout simplement difficile si la bibliothèque est vaste et complexe et impossible si la 3ème partie de la bibliothèque est fermée à la source. Une route plus facile peut-être à l'approche de la 3e partie et demandez-leur de couper un communiqué.

Une autre option peut être de copier leurs pom (s'assurer qu'il n'a pas de captures d'écran) modifier les informations de version et de l'installer manuellement le pom et de l'artefact dans votre référentiel.

6voto

Brian Fox Points 3068

La réponse précédente a suggéré de remplacer le groupe et de l'artefact id...ne faites pas ce que maven ne pas le reconnaître comme le même objet, plus tard, lorsque cette dépendance est libéré et vous vous retrouverez avec deux copies, sur le chemin de la classe. Ma méthode préférée est de changer uniquement la version et je vais faire quelque chose comme : [version originale]-[mon org nom]-[version svn je l'ai tiré d'] si je reçois quelque chose comme 1.0-SONATYPE-3425. En utilisant le svn rev, je peux toujours retirer la source de nouveau et le patch si nécessaire et de savoir exactement ce que je suis en utilisant sans tirer l'ensemble de la source dans mon propre svn.

Mise à jour - j'ai blogué sur ce dos pendant une.

-2voto

Mike Deck Points 7443

Installez simplement le pot avec un pom que vous possédez. Je change généralement le groupe et l'ID d'artefact pour qu'il soit clair que ce n'est pas la version officielle, mais c'est généralement le meilleur moyen de contourner votre problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X