Команда Maven, щоб визначити, який файл settings.xml використовує Maven


Відповіді:


333

Почніть maven з опцією -X (налагодження) та вивчіть початок виводу. Має бути щось подібне:

...
[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
...

(Оригінальні імена каталогів видалені мною)


10
Можливо, цього не було в налагодженнях виходу, поки Maven 3 не вийшов, але ваша публікація через 2,5 роки, нарешті, є точною відповіддю, яку я шукав (вибачте за 6-місячну затримку, помітивши це).
гарнітур

Версія maven, яку я використовував, maven2.x, не мала такої важливої ​​деталі, коли використовується прапор -B. ... Невдало, якщо ви намагаєтеся налагодити те, що відбувається з сервером Jenkins.
Cognitiaclaeves

168

Ваша відповідь (правильна) відповідь Клетусу означає, що тут задіяно кілька файлів налаштувань Maven.

Maven завжди використовує один або два файли налаштувань. Глобальні налаштування, визначені у ($ {M2_HOME} /conf/settings.xml), завжди потрібні. Файл налаштувань користувача (визначений у $ {user.home} /. M2 / settings.xml) необов’язковий. Будь-які налаштування, визначені в налаштуваннях користувача, мають перевагу над відповідними глобальними налаштуваннями.

Ви можете змінити розташування глобальних та користувальницьких налаштувань з командного рядка. Наступний приклад встановить глобальні параметри c: \ global \ settings.xml, а налаштування користувача c: \ user \ settings.xml :

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

Наразі немає властивості та засобів встановити, з яких файлів користувача та глобальних налаштувань використовувались Maven. Щоб отримати доступ до цих значень, вам доведеться змінити MavenCli та / або DefaultMavenSettingsBuilder для введення розташування файлів у вирішений об’єкт Налаштування.


1
це було б чудово, якби ми могли надати кілька налаштувань користувача.xml для користувачів, щоб ми могли використовувати їх, наприклад, у різних проектах. Я знаю, що ми могли б використовувати профіль. Але було б набагато краще, якби був окремий файл. Це неможливо, правда ?! Ура!
деспот

Я шукав рішення, як змінити мої налаштування користувача лише один раз, не втручаючись у файл. Тому я просто використав глобальний файл для налаштувань користувача. Тобто - налаштування c: \ global \ settings.xml таким чином файл користувача був опущений
msp

@despot, запізнення на вечірку, але певним чином можна за допомогою декількох визначених профілів та деяких спеціальних "тригерів": maven.apache.org/settings.html#Activation
нероздільний

Він завжди просить пом у поточній папці. "Ціль, яку ви вказали, потребує виконання проекту, але в цьому каталозі немає POM (/). Будь ласка, переконайтеся, що ви викликали Maven з правильного каталогу. -> [Довідка 1]"
Nilesh

137

Ви можете використовувати плагін довідки Maven, щоб повідомити про вміст файлів користувачів та глобальних налаштувань.

mvn help:effective-settings

попросить Maven виплюнути комбіновані глобальні та користувацькі налаштування .


Це допомагає мені оновлювати старий maven repo repo1.maven.org/maven2 на search.maven.org
Рікардо

40

Це файл конфігурації Maven. Його можна вказати на двох рівнях:

  1. Користувацький рівень. Цей файл settings.xml забезпечує конфігурацію для одного користувача і зазвичай надається у $ {user.home} /. M2 / settings.xml.

              NOTE: This location can be overridden with the CLI option:
    
              -s /path/to/user/settings.xml
  2. Глобальний рівень. Цей файл settings.xml забезпечує конфігурацію для всіх користувачів Maven на машині (якщо припустимо, що всі вони використовують одну і ту ж інсталяцію Maven). Зазвичай надається в $ {maven.home} /conf/settings.xml.

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

1
власність M2_HOME, а не maven.home
Багатий продавець

Це не має значення. Якщо ви встановите змінну оточення за допомогою maven.home, це не складе проблем
перший вівторок

24

M2_HOMEЗмінна середовища для глобальної. Див. Довідку щодо налаштувань :

settingsЕлемент в settings.xmlфайлі містить елементи , які використовуються для визначення значення, налаштувати виконання Maven різними способами, як pom.xml, але не повинні бути об'єднані в який - або конкретний проект, або поширюватися на аудиторію. До них відносяться такі значення, як місцеве місце сховища, альтернативні віддалені сервери репозиторію та інформація про автентифікацію. Є два місця, де може жити файл settings.xml:

  • Установка Maven: $M2_HOME/conf/settings.xml
  • Встановлення користувача: ${user.home}/.m2/settings.xml

Якщо ця відповідь має на увазі, що визначення сховища проводиться лише шляхом вивчення середовища, то це правильна відповідь. Я сподівався дізнатися про перемикач командного рядка або щось таке, що дає остаточний список кваліфікованих шляхів для всіх використовуваних файлів settings.xml ... Я думаю, що такого механізму, мабуть, немає.
гарнітур

3
+1 відповідь, Клетус. Я думаю, що варто згадати наступний рядок із вашої посилання "Налаштування налаштувань":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.
Кевін Мередіт

Необхідність мати конкретну конфігурацію для пошуку приватних сховищ мене так сильно болить. Я усвідомлюю, що це статус-кво в екосистемі Java, але це призводить до жахливо невідтворюваних налаштувань збірки.
jpierson

24

Швидкий і брудний метод визначити, чи використовує Maven потрібні налаштування.xml буде недійсним xml та запустити безпечну команду Maven, яка потребує settings.xml.

Якщо він читає ці параметри.xml, тоді Maven повідомляє про помилку: "Помилка читання налаштування.xml ..."


3
Хоча відповідь Клетуса була дуже інформативною, ця відповідь в найсуворішому сенсі більше того, що я шукав (враховуючи, що, мабуть, бракує будь-якого механізму звітування файлів settings.xml у самому
Мейвіні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.