Maven - settings.xml中的<server> </server>

时间:2011-07-01 14:46:23

标签: maven maven-tomcat-plugin

我使用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中,因此我不必使用属性?

2 个答案:

答案 0 :(得分:30)

首先请允许我说,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中设置凭据的原因是因为在大多数情况下您的用户名和密码应该是保密的,并且没有理由偏离设置人们必须使用的服务器凭据的标准方式适应。

答案 1 :(得分:0)

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中应该相同。

这适用于Maven3。