maven - aleksei-khitev/knowledge_base GitHub Wiki

Maven

Запуск maven в режиме debug

В папке bin есть лаунчеры mvnDebug для Windows и Linux/UNIX

...\apache-maven-3.6.3\bin> tree /f
    m2.conf
    mvn
    mvn.cmd
    mvnDebug
    mvnDebug.cmd
    mvnyjp

Они содержат аргументы debug, позволяющие подключать IDE для удаленного debug-а
К примеру, cmd файл выглядит так

@setlocal
@set MAVEN_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@call "%~dp0"mvn.cmd %*

Balaji Varanasi. Introducing Maven. A Build Tool for Today's Java Developers. Second Edition. page 12

Логирование по умолчанию

В папке apache-maven-3.6.3\conf\logging есть файл simplelogger.properties, в котором можно задать параметры логирования.
К примеру, defaultLogLevel поменять на debug или в logFile заменть System.out на какой то файл
По умолчанию, конфиг выглядет так

org.slf4j.simpleLogger.defaultLogLevel=info
org.slf4j.simpleLogger.showDateTime=false
org.slf4j.simpleLogger.showThreadName=false
org.slf4j.simpleLogger.showLogName=false
org.slf4j.simpleLogger.logFile=System.out
org.slf4j.simpleLogger.cacheOutputStream=true
org.slf4j.simpleLogger.levelInBrackets=true
org.slf4j.simpleLogger.log.Sisu=info
org.slf4j.simpleLogger.warnLevelString=WARNING

org.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient=off
org.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient.wire=off

Balaji Varanasi. Introducing Maven. A Build Tool for Today's Java Developers. Second Edition. page 13

Задача параметров JVM глобально для maven

Чтоб задать JVM параметры (память, к примеру), можно задать переменную среды MAVEN_OPTS
Balaji Varanasi. Introducing Maven. A Build Tool for Today's Java Developers. Second Edition. page 14

Секции settings.xml

Скелет settings.xml выглядет так

<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/>
    <interactiveMode/>
    <offline/>
    <pluginGroups/>
    <servers/>
    <mirrors/>
    <proxies/>
    <profiles/>
    <activeProfiles/>
</settings>
Элемент Описание
localRepository можно изменить путь к репозторию (по умолчанию ~/.m2/repository)
interactiveMode Задает, будет ли интерактивность с пользователем? По умолчанию true
offline Подключаться к сети или нет. По умолчанию false
servers Можно определить креды и другие данные серверов git, build, repo
mirrors Можно задать альтернативные расположения репозиториев для загрузки зависимостей
proxies Можно задать данные для подключения к Интернету

Balaji Varanasi. Introducing Maven. A Build Tool for Today's Java Developers. Second Edition. page 17-18

Шифрование паролей для сокрытия в settings.xml

Создание master password

> mvn -emp somepassword
{svHfHS5kBZIHlQJLk4LURBvMZiN87hO2UAgjM1TcrwE=}

Полученный зашифрованный пароль нужно положить в settings-security.xml в каталоге .m2 (если его нет, то создать его)

<settingsSecurity>
    <master>{svHfHS5kBZIHlQJLk4LURBvMZiN87hO2UAgjM1TcrwE=}</master>
</settingsSecurity>

Если этого не сделать, шифрование паролей упадет с ошибкой

[ERROR] Error executing Maven.
[ERROR] java.io.FileNotFoundException: C:\Users\Aleksei_Khitev\.m2\settings-security.xml (The system cannot find the file specified)
[ERROR] Caused by: C:\Users\Aleksei_Khitev\.m2\settings-security.xml (The system cannot find the file specified)

Шифрование нужных паролей

> mvn -ep someconnectionpassword
{0+ujuJpz2wAHs3VOyyKr0/RGOlWpnjtp+hqm4L3uS5BPEUMKh/L9DSmPIbZJ3Ty2}

Полученный шифрованный пароль можно вставлять в settings.xml вместо пароля
Balaji Varanasi. Introducing Maven. A Build Tool for Today's Java Developers. Second Edition. page 20

⚠️ **GitHub.com Fallback** ⚠️