Maven -в settings.xml - PullRequest
       21

Maven -в settings.xml

27 голосов
/ 01 июля 2011

Я использую tomcat-maven-plugin для развертывания моей войны на сервере. Что мне нужно сделать, так это настроить его в моем pom.xml:

<configuration>
...
   <url>http://localhost/manager</url>
   <username>admin</username>
   <password>admin</password>
...
</configuration>

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

Итак, давайте использовать .m2/settings.xml:

<servers>
    <server>
        <id>local_tomcat</id>
        <username>admin</username>
        <password>admin</password>
    </server>
</servers>

Теперь измените pom.xml:

<configuration>
    <server>local_tomcat</server>
</configuration>

Но где разместить URL сервера? Для этого нет места в файле settings.xml под тегом server! Может быть, так?

<profiles>
  <profile>
     <id>tomcat-config</id>
      <properties>
    <tomcat.url>http://localhost/manager</tomcat.url>
      </properties>
  </profile>
</profiles>

<activeProfiles>
   <activeProfile>tomcat-config</activeProfile>
</activeProfiles>

.. и используйте свойство $ {tomcat.url}.

Но тогда возникает вопрос: зачем вообще использовать тег сервера в settings.xml? Почему бы не использовать свойства для имени пользователя и пароля? Или есть место для URL-адреса в URL-адресе настроек, поэтому мне не нужно использовать свойства?

Ответы [ 2 ]

30 голосов
/ 02 июля 2011

Прежде всего позвольте мне сказать, profiles - одна из самых мощных функций Maven.

Сначала создайте в вашем pom.xml профиль, который будет выглядеть так:

<profiles>
    <profile>
        <id>tomcat-localhost</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <tomcat-server>localhost</tomcat-server>
            <tomcat-url>http://localhost:8080/manager</tomcat-url>
        </properties>
    </profile>
</profiles>

Затем в ваш ~/.m2/settings.xml файл добавьте servers записи, подобные этой:

   <servers>
       <server>
           <id>localhost</id>
           <username>admin</username>
           <password>password</password>
       </server>
    </servers>

Настройте ваш build плагин так:

<plugin>
    <!-- enable deploying to tomcat -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>
    <version>1.1</version>
    <configuration>
        <server>${tomcat-server}</server>
        <url>${tomcat-url}</url>
    </configuration>
</plugin>

Это включит ваш профиль tomcat-localhost по умолчанию и позволит вам развернуть его с помощью простого mvn clean package tomcat:deploy.

Для развертывания в других целях настройте новую запись <server/> в settings.xml с соответствующими учетными данными. Добавьте новый profile, но не указывайте раздел <activation/> и настройте его так, чтобы он указывал на соответствующие детали.

Затем для его использования выполните mvn clean package tomcat:deploy -P [profile id], где [profile id] - новый профиль.

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

2 голосов
/ 15 апреля 2019

settings.xml

<settings>
  <servers>
    <server>
        <id>company.jfrog.io</id>
        <username>user-name</username>
        <password>user-password</password>
    </server>   
  </servers>
</settings>

pom.xml

<repositories>
    <repository>
        <id>company.jfrog.io</id>
        <url>https://company.jfrog.io/company/release</url>
    </repository>
</repositories>

Положить settings.xml в

c:/Users/user-name/.m2/settings.xml (для Windows),

~/.m2/settings.xml (для Linux).

company.jfrog.io может быть любым идентификатором, но он должен совпадать в settings.xml и pom.xml.

Это работает для Maven 3.

...