383 votes

Commande Maven pour déterminer quel fichier settings.xml Maven utilise

Comment utiliser la ligne de commande de Maven pour déterminer quel fichier settings.xml Maven récupère ?

445voto

elek Points 696

Lancez maven avec l'option -X (debug) et examinez le début de la sortie. Il devrait y avoir quelque chose comme ceci :

...
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from c:\....\apache-maven-3.0.3\conf\settings.xml
[DEBUG] Reading user settings from c:\....\.m2\settings.xml
[DEBUG] Using local repository at C:\....\repository
...

(Les noms des répertoires originaux sont supprimés par mes soins)

12 votes

Peut-être que ce n'était pas dans la sortie de débogage jusqu'à ce que maven 3 soit publié, mais votre message quelque 2,5 ans plus tard est finalement la réponse exacte que je cherchais (désolé pour le retard de 6 mois pour le remarquer).

0 votes

La version de maven que j'utilisais, maven2.x, ne montrait pas ce détail important lorsque le drapeau -B était utilisé. ... Malheureux, si vous essayez de déboguer ce qui se passe avec un serveur Jenkins.

1 votes

J'ai obtenu beaucoup de résultats de mvn -X qui défilait rapidement au-delà de la mémoire tampon (sous Windows). mvn -X |more suivie de CTRL+C pour terminer la sortie.

207voto

serg10 Points 10157

Vous pouvez utiliser le plugin d'aide maven pour vous indiquer le contenu de vos fichiers de paramètres utilisateur et globaux.

mvn help:effective-settings

demandera à maven de cracher le combinaison des paramètres globaux et des paramètres utilisateur .

0 votes

Cela m'aide à mettre à jour l'ancien dépôt maven. repo1.maven.org/maven2 a recherche.maven.org

194voto

Rich Seller Points 46052

Votre commentaire à la réponse (correcte) de cletus implique qu'il y a plusieurs fichiers de paramètres Maven impliqués.

Maven utilise toujours un ou deux fichiers de paramètres. Le fichier paramètres globaux défini dans ( ${M2_HOME}/conf/settings.xml ) est toujours nécessaire. Le site paramètres de l'utilisateur (défini dans ${user.home}/.m2/settings.xml ) est facultatif. Tous les paramètres définis dans les paramètres utilisateur ont la priorité sur les paramètres globaux correspondants.

Vous pouvez modifier l'emplacement de l'élément paramètres globaux et paramètres d'utilisateur à partir de la ligne de commande, l'exemple suivant définit les paramètres globaux comme suit c : \global\settings.xml et les paramètres de l'utilisateur à c : \user\settings.xml :

mvn install --settings c:\user\settings.xml 
     --global-settings c:\global\settings.xml

Actuellement, il n'existe aucune propriété ou moyen d'établir quels fichiers de paramètres utilisateur et globaux ont été utilisés à partir de Maven. Pour accéder à ces valeurs, il faudrait modifier MavenCli et/ou DefaultMavenSettingsBuilder pour injecter les emplacements de fichiers dans l'objet Settings résolu.

1 votes

Ce serait génial si nous pouvions fournir plusieurs settings.xml d'utilisateurs, afin de pouvoir les utiliser avec différents projets par exemple. Je sais que nous pourrions utiliser un profil. Mais ce serait beaucoup mieux s'il y avait un fichier séparé. Ce n'est pas possible, n'est-ce pas ? A la vôtre !

0 votes

Je cherchais une solution pour remplacer mes paramètres d'utilisateur une seule fois sans avoir à modifier le fichier. J'ai donc simplement utilisé le fichier global pour les paramètres de l'utilisateur. C'est à dire --settings c : \global\settings.xml de cette façon le fichier utilisateur a été omis

0 votes

@despot, j'arrive tard dans la soirée, mais d'une certaine manière, vous pouvez définir plusieurs profils et des "déclencheurs" personnalisés : maven.apache.org/settings.html#Activation

45voto

Firstthumb Points 1604

Il s'agit du fichier de configuration pour Maven. Il peut être spécifié à deux niveaux :

  1. Niveau d'utilisateur. Ce fichier settings.xml fournit la configuration pour un seul utilisateur, et est normalement fourni dans ${user.home}/.m2/settings.xml.

              NOTE: This location can be overridden with the CLI option:
    
              -s /path/to/user/settings.xml
  2. Niveau mondial. Ce fichier settings.xml fournit la configuration pour tous les utilisateurs de Maven sur une machine (en supposant qu'ils utilisent tous le même fichier Maven ). Il est normalement fourni dans ${maven.home}/conf/settings.xml.

              NOTE: This location can be overridden with the CLI option:
    
              -gs /path/to/global/settings.xml

1 votes

La propriété est M2_HOME, et non maven.home

0 votes

Cela n'a pas d'importance. Si vous définissez la variable d'environnement en utilisant maven.home, ce ne sera pas un problème.

31voto

cletus Points 276888

El M2_HOME pour la variable d'environnement globale. Voir Référence des paramètres :

El settings dans l'élément settings.xml Le fichier contient des éléments utilisés pour définir les valeurs qui configurent l'exécution de Maven de diverses manières, comme le site pom.xml mais ne devrait pas l'être à un projet spécifique, ou distribués à un public. Ces incluent des valeurs telles que l'emplacement local, les serveurs de dépôt distants alternatifs serveurs de dépôt distants, et les informations d'authentification. Il existe deux emplacements où peut se trouver un fichier settings.xml :

  • L'installation de Maven : $M2_HOME/conf/settings.xml
  • L'installation d'un utilisateur : ${user.home}/.m2/settings.xml

0 votes

Si cette réponse implique que la détermination du référentiel se fait uniquement en examinant l'environnement, alors c'est une réponse valable. J'espérais apprendre l'existence d'un commutateur de ligne de commande ou quelque chose qui donne une liste définitive des chemins qualifiés pour tous les fichiers settings.xml utilisés... Je pense qu'il n'existe probablement pas de tel mécanisme.

4 votes

+1 réponse, Cletus. Je pense qu'il est utile de mentionner la ligne suivante de votre lien "Référence des paramètres" : the former settings.xml are also called global settings, the latter settings.xml are referred to as user settings. If both files exists, their contents gets merged, with the user-specific settings.xml being dominant.

1 votes

La nécessité d'avoir une configuration spécifique de la machine pour trouver les dépôts privés me peine beaucoup. Je réalise que c'est le statu quo dans l'écosystème Java, mais cela conduit à des configurations de construction terriblement non reproductibles.

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