Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    3.4.3. Intervalle de versions pour une dépendance

    Vous n'avez pas à dépendre d'une version spécifique d'une dépendance, vous pouvez définir un ensemble de versions acceptables pour une dépendance donnée. Par exemple, vous pouvez configurer votre projet pour qu'il dépende de JUnit 3.8 ou supérieure, ou toutes les versions de JUnit comprises entre 1.2.10 et 1.2.14. Pour cela, vous devez entourer les numéros de versions avec les caractères suivants :

    (, )

    pour définir un intervalle ouvert

    [, ]

    pour définir un intervalle fermé

    Par exemple, si vous voulez accéder aux versions de JUnit supérieures ou égales à 3.8 mais inférieures à 4.0, vous déclareriez votre dépendance comme dans l'Exemple 3.5, « Définition d'un intervalle de versions : JUnit 3.8 - JUnit 4.0 ».

    Exemple 3.5. Définition d'un intervalle de versions : JUnit 3.8 - JUnit 4.0

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>[3.8,4.0)</version>
      <scope>test</scope>
    </dependency>
    


    Si vous voulez dépendre de JUnit pour toutes les versions inférieures à 3.8.1, vous ne devez spécifier que la borne supérieure comme dans l'Exemple 3.6, « Définition d'un intervalle de versions : JUnit <= 3.8.1 ».

    Exemple 3.6. Définition d'un intervalle de versions : JUnit <= 3.8.1

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>[,3.8.1]</version>ex-de
      <scope>test</scope>
    </dependency>
    

    Une version avant ou après la virgule n'est pas obligatoire et signifie +/- l'infini. Par exemple, "[4.0,)" signifie toute version supérieure ou égale à 4.0. "(,2.0)" signifie toute version strictement inférieure à 2.0. "[1.2]" signifie uniquement la version 1.2, et rien d'autre.

    Note

    Quand vous déclarez une version "normale" telle que la version 3.8.2 de JUnit, Maven voit cette déclaration comme "accepter toute version, mais en préférant la version 3.8.2". Ce qui signifie que lorsqu'un conflit est détecté, Maven s'autorise l'utilisation des algorithmes de résolution de conflit pour choisir la meilleure version. Si vous spécifiez [3.8.2], cela indique que seule la version 3.8.2 sera utilisée et aucune autre. Si ailleurs il se trouve une dépendance qui spécifie [3.8.1], le build va échouer en vous indiquant le conflit en question. Nous vous précisons tout cela pour que vous soyez au courant de cette option, mais n'utilisez là que lorsque c'est véritablement nécessaire. Pour résoudre ces conflits de version, il est préférable de passer par la balise dependencyManagement.