2010-05-19 17 views
3

Imaginez deux projets. Le premier est le projet framework-core qui est dans la version 1.1.0 et possède plusieurs générations de snapshots. L'autre est le projet example-business qui a la dépendance suivante à framework-core sur le numéro_build itération 9.Si la dépendance est une version unique de l'instantané et que l'installation est appelée, que sélectionne maven?

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>framework-core</artifactId> 
    <version>1.1.0-20100518.134928-9</version> 
</dependency> 

Qu'advient-il si mvn install est appelée sur le framework-core? J'ai découvert que l'artefact est copié dans le dossier et est nommé à *.1.1.0-SNAPSHOT.jar (comme prévu). Cela m'amène à la supposition que cette version n'est utilisée que si cette version de 1.1.0-SNAPSHOT est définie comme une dépendance et non comme la construction précise.

Pour tester quelque chose de local sans le déployer dans le référentiel maven: appelez mvn install, changez la dépendance en 1.1.0-SNAPSHOT - et l'artefact que vous venez d'installer est utilisé? Ou est-il possible d'écraser la construction spécifique (en utilisant la phase de cycle de vie install)?

Répondre

6

Lorsque vous utilisez une dépendance avec une version d'horodatage d'un -SNAPSHOT - comme -20100518.134928-9 dans ce cas - vous verrouillez la version et dire explicitement Maven utiliser cette version. Même si un nouveau -SNAPSHOT est créé, la dépendance ne sera pas mise à jour, c'est le point d'un "instantané verrouillé".

Si vous souhaitez utiliser la dernière -SNAPSHOT, déclarer une dépendance sur la version -snapshot pour déverrouiller la dépendance:

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>framework-core</artifactId> 
    <version>1.1.0-SNAPSHOT</version> 
</dependency> 

Changer manuellement est pas une grosse affaire, mais les objectifs suivants du Versions Maven plugin pourrait aider dans certaines situations:

  • versions:lock-snapshots recherches les pom pour tous -snapshot versions et les remplace par le version de l'horodatage actuel de ce -SNAPSHOT, par ex. -20090327.172306-4
  • versions:unlock-snapshots recherche le pom pour toutes les versions d'instantané verrouillées et les remplace par -SNAPSHOT . versions: déverrouillage-instantanés
+0

Merci encore, pour l'explication. Même les objectifs de maven-version-plugin seront utiles! Merci – codevour