web-dev-qa-db-ja.com

Maven-settings.xmlの<server />

私は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には、その場所はありません。たぶんこんな感じ?

<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にあるので、プロパティを使用する必要はありませんか?

27
Balázs Németh

まず、profilesはMavenの最も強力な機能の1つです。

まず、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で認証情報が設定されるのは、ほとんどの場合、ユーザー名とパスワードは秘密にすべきであり、人々が適応しなければならないサーバー認証情報を設定する標準の方法から逸脱する理由はないためです。

30
user177800

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.xmlpom.xmlで同じにする必要があります。

これはMaven 3で機能します。

2
v.ladynev