View on GitHub

blog

Конфигурация maven

Все локальные артифакты и настройки maven храняться в домашнем каталоге пользователя: C:\Users\user_name\.m2
Каталог C:\Users\user_name - может отличаться, в зависимости от настроек пользователя на рабочей машине.

Настройка .m2/settings.xml

Создайте файл settings.xml в каталоге .m2, если он еще не создан. Данный файл может содржать много настроек, но если у вас его нет, то можете взять из примера.

Данный файл описывает где расположены удаленные репозитории maven, а так же логины и пароли для доступа к ним.

Добавление логина/пароля от сервера

Добавьте раздлел settings/servers/server

<settings>
    ...
    <servers>
        ...
        <server>
            <username>jfrog_login</username>
            <password>password</password>
            <id>server_id1</id>
        </server>
        <server>
            <username>jfrog_login</username>
            <password>password</password>
            <id>server_id2</id>
        </server>
        ...
    </servers>
</settings>

Шифрование пароля

Maven поддерживает шифрование паролей сервера. Основным вариантом использования этого решения является

Внедренное решение добавляет следующие возможности:

Как создать мастер-пароль

Используйте следующую командную строку:

mvn --encrypt-master-password <password>

Начиная с Maven 3.2.1 аргумент пароля больше не должен использоваться

В Maven до версии 3.2.1 вы должны указать пароль в командной строке в качестве аргумента, что означает, что вам может потребоваться экранировать свой пароль.

Кроме того, обычно оболочка хранит полную историю введенных вами команд, поэтому любой, у кого есть доступ к вашему компьютеру, может восстановить пароль из истории оболочки.

Начиная с Maven 3.2.1 пароль является необязательным аргументом. Если вы опустите пароль, вам будет предложено его ввести, что предотвратит все проблемы, упомянутые выше.

Эта команда создаст зашифрованную версию пароля, что-то вроде

{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}

Сохраните этот пароль в папке ${user.home}/.m2/ settings-security.xml это должно выглядеть как

<settingsSecurity>
  <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>

Когда это будет сделано, вы можете начать шифрование существующих паролей сервера.

Как зашифровать пароли сервера

Вы должны использовать следующую командную строку:

mvn --encrypt-password <password>

Как и –encrypt-master-password, аргумент пароля больше не должен использоваться с Maven 3.2.1.

Эта команда создает его зашифрованную версию, что-то вроде

{COQLCE6DU6GtcS5P=}

Скопируйте и вставьте его в раздел серверов вашего файла settings.xml. Это будет выглядеть так

<settings>
...
  <servers>
...
    <server>
      <id>my.server</id>
      <username>foo</username>
      <password>{COQLCE6DU6GtcS5P=}</password>
    </server>
...
  </servers>
...
</settings>

Обратите внимание, что пароль может содержать любую информацию за пределами фигурных скобок, поэтому следующее будет работать:

<settings>
...
  <servers>
...
    <server>
      <id>my.server</id>
      <username>foo</username>
      <password>Oleg reset this password on 2009-03-11, expires on 2009-04-11 {COQLCE6DU6GtcS5P=}</password>
    </server>
...
  </servers>
...
</settings>

Затем вы можете использовать, скажем, плагин развертывания, чтобы написать на этот сервер:

mvn deploy:deploy-file -Durl=https://maven.corp.com/repo \
                       -DrepositoryId=my.server \
                       -Dfile=your-artifact-1.0.jar \

Как сохранить мастер-пароль на съемном диске

Создайте мастер-пароль точно так, как описано выше, и сохраните его на съемном диске, например, в OSX, мой USB-накопитель монтируется как /Volumes/mySecureUsb, поэтому я сохраняю

<settingsSecurity>
  <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>

в файле /Volumes/mySecureUsb/secure/settings-security.xml

Затем я создаю $ {user.home} /. M2 / settings-security.xml со следующим содержимым:

<settingsSecurity>
  <relocation>/Volumes/mySecureUsb/secure/settings-security.xml</relocation>
</settingsSecurity>

Это гарантирует, что шифрование работает только тогда, когда USB-накопитель подключен к ОС. Это относится к случаю использования, когда только определенные люди имеют право развертывать и выдают эти устройства.

Экранирование фигурных скобок в пароле (начиная с Maven 2.2.0)

Иногда вы можете обнаружить, что ваш пароль (или его зашифрованная форма) содержит буквенное значение “{“ или “}”. Если вы добавили такой пароль в свой файл settings.xml как есть, вы обнаружите, что Maven делает с ним странные вещи. В частности, Maven рассматривает все символы, предшествующие литералу ‘{‘, и все символы после литерала ‘}’ как комментарии. Очевидно, это не то поведение, которое вам нужно. Что вам действительно нужно, так это способ избежать использования фигурных скобок в вашем пароле.

Вы можете сделать это с помощью широко используемого escape-символа ‘'. Если ваш пароль выглядит так:

jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+{EF1iFQyJQ=

Тогда значение, которое вы должны добавить в свой файл settings.xml, будет выглядеть так:

{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+\{EF1iFQyJQ=}

Создайте/отредактируйте активный профиль

Создайте раздел settings/profiles/profile

<settings>
    ...
    <profiles>
        ...
        <profile>
            <id>profile-id-1</id>
            ...
        </profile>
        ...
    </profile>
    <activeProfiles>
        <activeProfile>profile-id-1</activeProfile>
        <activeProfile>profile-id-2</activeProfile>
  </activeProfiles>
</settings>

В активном профиле укажите репозитории

<settings>
    ...
    <profiles>
        ...
        <profile>
            <id>profile-id-1</id>
            ...
            <repositories>
                <repository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>server_id1</id>
                    <name>libs-release</name>
                    <url>http://10.1.18.18:8081/artifactory/repo_name</url>
                </repository>
                <repository>
                    <snapshots />
                    <id>server_id2</id>
                    <name>libs-snapshot</name>
                    <url>http://10.1.18.18:8081/artifactory/repo_name</url>
                </repository>
            </repositories>
        </profile>
        ...
    </profile>
</settings>

Пример .m2/settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <server>
      <username>jfrog_login</username>
      <password>password</password>
      <id>server_id1</id>
    </server>
    <server>
      <username>jfrog_login</username>
      <password>password</password>
      <id>server_id2</id>
    </server>
  </servers>
  <profiles>
    <profile>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>server_id1</id>
          <name>libs-release</name>
          <url>http://10.1.18.18:8081/artifactory/repo_name</url>
        </repository>
        <repository>
          <snapshots />
          <id>server_id2</id>
          <name>libs-snapshot</name>
          <url>http://10.1.18.18:8081/artifactory/repo_name</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>libs-release</name>
          <url>http://10.1.18.18:8081/artifactory/libs-release</url>
        </pluginRepository>
        <pluginRepository>
          <snapshots />
          <id>snapshots</id>
          <name>libs-snapshot</name>
          <url>http://10.1.18.18:8081/artifactory/libs-snapshot</url>
        </pluginRepository>
      </pluginRepositories>
      <id>artifactory</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
</settings>

После настройки maven переходим к настройке проекта