← Назад к вопросам

В каком месте находится файл с настройками Maven

1.6 Junior🔥 151 комментариев
#Другое#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Файл настроек Maven — расположение

Файл с глобальными настройками Maven находится в: ~/.m2/settings.xml

Это основной файл конфигурации Maven для каждого пользователя.

Иерархия файлов настроек

Maven использует НЕСКОЛЬКО файлов конфигурации, которые применяются в порядке приоритета:

1. settings.xml (уровень пользователя) — ОСНОВНОЙ

~/.m2/settings.xml  (Linux/Mac)
%USERPROFILE%\.m2\settings.xml  (Windows)
C:\Users\YourUsername\.m2\settings.xml  (Windows, полный путь)

Это личный файл для каждого пользователя системы. Настройки здесь применяются ко всем проектам, которыми работает пользователь.

2. settings.xml (уровень сервера) — ГЛОБАЛЬНЫЙ

$MAVEN_HOME/conf/settings.xml

Это глобальный файл для всей установки Maven. Применяется для всех пользователей системы.

Например:

/usr/local/apache-maven-3.8.1/conf/settings.xml  (Linux)
C:\Program Files\Apache\Maven\conf\settings.xml  (Windows)

3. pom.xml (уровень проекта) — ЛОКАЛЬНЫЙ

./pom.xml (в корне проекта)

Использует собственные конфигурации для конкретного проекта.

Приоритет (какие настройки применяются)

1. pom.xml (проект) — самый высокий приоритет
2. ~/.m2/settings.xml (пользователь)
3. $MAVEN_HOME/conf/settings.xml (сервер) — самый низкий приоритет

Если одна настройка определена в нескольких местах, берётся из файла с БОЛЕЕ ВЫСОКИМ приоритетом.

Содержимое ~/.m2/settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
          http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- Локальный репозиторий (где хранятся скачанные зависимости) -->
    <localRepository>~/.m2/repository</localRepository>

    <!-- Серверы для аутентификации -->
    <servers>
        <server>
            <id>my-repo</id>
            <username>user</username>
            <password>encrypted-password</password>
        </server>
    </servers>

    <!-- Проксирование (если нужен proxy) -->
    <proxies>
        <proxy>
            <id>my-proxy</id>
            <active>true</active>
            <protocol>http</protocol>
            <host>proxy.example.com</host>
            <port>8080</port>
        </proxy>
    </proxies>

    <!-- Репозитории -->
    <repositories>
        <repository>
            <id>central</id>
            <url>https://repo.maven.apache.org/maven2</url>
        </repository>
    </repositories>

    <!-- Профили для разных конфигураций -->
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <java.version>11</java.version>
            </properties>
        </profile>
    </profiles>

    <!-- Активные профили -->
    <activeProfiles>
        <activeProfile>dev</activeProfile>
    </activeProfiles>

</settings>

Практические примеры

Пример 1: Настройка локального репозитория

<!-- ~/.m2/settings.xml -->
<settings>
    <!-- Пользовательский путь к репозиторию вместо ~/.m2/repository -->
    <localRepository>/var/lib/maven-repo</localRepository>
</settings>

Пример 2: Аутентификация для приватного репозитория

<!-- ~/.m2/settings.xml -->
<settings>
    <servers>
        <server>
            <id>github-repo</id>
            <username>myusername</username>
            <password>${env.GITHUB_TOKEN}</password>  <!-- Из переменной окружения -->
        </server>
    </servers>
</settings>

<!-- pom.xml -->
<repositories>
    <repository>
        <id>github-repo</id>  <!-- id должен совпадать! -->
        <url>https://maven.pkg.github.com/myorg/myrepo</url>
    </repository>
</repositories>

Пример 3: Настройка proxy

<!-- ~/.m2/settings.xml -->
<settings>
    <proxies>
        <proxy>
            <id>corporate-proxy</id>
            <active>true</active>
            <protocol>http</protocol>
            <host>proxy.company.com</host>
            <port>8080</port>
            <username>proxyuser</username>
            <password>proxypass</password>
            <nonProxyHosts>*.company.com|localhost</nonProxyHosts>
        </proxy>
    </proxies>
</settings>

Как создать файл settings.xml

Шаг 1: Создай директорию .m2

mkdir -p ~/.m2

Шаг 2: Скопируй шаблон

cp $MAVEN_HOME/conf/settings.xml ~/.m2/settings.xml

Шаг 3: Отредактируй нужные параметры

vi ~/.m2/settings.xml

Или создай минимальный файл

cat > ~/.m2/settings.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0">
    <localRepository>~/.m2/repository</localRepository>
</settings>
EOF

Проверка пути Maven

# Узнать, где установлен Maven
mvn --version

# Вывод:
# Apache Maven 3.8.1 (05682f26f23d0d9e6dde54a81b99d9fad1d19ce6)
# Maven home: /usr/local/apache-maven-3.8.1  ← $MAVEN_HOME
# Java version: 11.0.11

# Файл глобальных настроек:
# /usr/local/apache-maven-3.8.1/conf/settings.xml

Где находится ~/.m2 на разных ОС

Linux и Mac

~/.m2/settings.xml
~/.m2/repository/

Полные пути:

/home/username/.m2/settings.xml  (Linux)
/Users/username/.m2/settings.xml  (Mac)

Windows

%USERPROFILE%\.m2\settings.xml

Полные пути:

C:\Users\username\.m2\settings.xml
C:\Users\username\.m2\repository\

Команды для работы с settings.xml

# Просмотреть активные настройки
mvn help:describe -Dplugin=help

# Просмотреть эффективные настройки (с учётом всех файлов)
mvn help:effective-settings

# Просмотреть эффективный POM (с учётом settings.xml и родительских POM)
mvn help:effective-pom

# Проверить доступ к репозиториям
mvn dependency:tree

# Очистить кэш зависимостей
rm -rf ~/.m2/repository

Важные настройки в settings.xml

1. localRepository — где хранятся зависимости

<localRepository>${user.home}/.m2/repository</localRepository>

По умолчанию: ~/.m2/repository

2. servers — учётные данные для приватных репозиториев

<servers>
    <server>
        <id>my-nexus</id>
        <username>user</username>
        <password>pass</password>
    </server>
</servers>

3. mirrors — переадресация репозиториев

<mirrors>
    <mirror>
        <id>aliyun</id>
        <name>Aliyun Maven</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>central</mirrorOf>  <!-- Заменяет central репозиторий -->
    </mirror>
</mirrors>

4. profiles — разные конфигурации

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <environment>development</environment>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <environment>production</environment>
        </properties>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

Безопасность

⚠️ ВАЖНО: НЕ коммитить settings.xml с паролями в git!

Безопасный способ 1: Переменные окружения

<password>${env.MAVEN_PASSWORD}</password>
export MAVEN_PASSWORD="my-secret-password"

Безопасный способ 2: Шифрование паролей

# Создать главный пароль
mvn --encrypt-master-password

# Зашифровать пароль репозитория
mvn --encrypt-password

Чек-лист

Основной файл: ~/.m2/settings.xml (или C:\Users...) ✓ Глобальный файл: $MAVEN_HOME/conf/settings.xml ✓ Проверь: mvn help:effective-settings ✓ Не коммитить: пароли в settings.xml ✓ Используй: переменные окружения или шифрование ✓ localRepository: по умолчанию ~/.m2/repository

В каком месте находится файл с настройками Maven | PrepBro