当前位置: > 其它学习 > Maven >

Maven自动化部署方案

时间:2019-05-10 18:02来源:linux.it.net.cn 作者:IT
Maven自动化部署方案
一、   摘要
Maven是一个项目构建和管理的工具,使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,而且tomcat并不需要进行重新启动。由于项目在不同环境(开发、测试、生产)下的配置文件不同,因此进行远程部署前,项目打包也需要使用不同的策略,而maven可通过自定义profiles,实现根据命令参数来执行相应的打包策略。

方案的实现模型:项目源代码在eclipse中创建,通过maven插件对其进行编译、测试、打包(按策略)、部署到远程tomcat,远程tomcat对maven上传过来的war进行自动解压并部署启动。

二、   环境
Eclipse

Apache Maven 3.3.3

Tomcat7

三、   配置
1、Tomcat

         Tomcat提供了manager的功能,启动tomcat后,通过相应用户名和密码进行登录,能够对容器内的应用进行启动、停止、部署以及卸载。而这种功能的开启,需要在tomcat的配置文件中进行配置。

在tomcat根路径\conf\tomcat-users.xml文件中加入以下配置,然后启动tomcat。

<role rolename="manager-script"/>

<role rolename="manager-gui"/>

<user username="admin" password="admin" roles="manager-script,manager-gui"/>

说明:manager-script角色是实现上述功能的主要角色;

     manager-gui角色是允许用户通过远程访问manager的管理页面。

2、Maven

         Maven通过其tomcat7-maven-plugin插件登录远程tomcat,并上传工程war包的,因此需要为其配置tomcat的manager账户的用户名和密码,这种配置有两种方式,一种是在项目的POM文件中配置,这种配置方式只对当前maven工程有效,且暴漏了tomcat的用户名密码;另一种方式是,在本机maven的setting文件中配置,对本机所有maven工程有效,且不对外暴漏tomcat用户名和密码:

         在sertting文件中servers标签下加入以下配置。

<server>

         <id>tomcat</id>

         <username>admin</username>

         <password>admin</password>

</server>

说明:用户名和密码是tomcat中配置的用户名和密码;

           Id是将来用于pom文件中进行引用指定。

3、POM

         Pom文件中,配置profile和resource实现不同的打包策略,配置plugin引入插件来实现远程部署。

在pom文件的project标签下加入以下配置。

<profiles> 

             <profile> 

                 <!-- 本地开发环境 --> 

                 <id>development</id> 

                 <properties> 

                     <profiles.active>development</profiles.active> 

                     <deploy.url>http://localhost:8080/manager/text</deploy.url> 

                 </properties> 

                 <activation> 

                     <activeByDefault>true</activeByDefault> 

                 </activation> 

             </profile> 

             <profile> 

                 <!-- 测试环境 --> 

                 <id>test</id> 

                 <properties> 

                     <profiles.active>test</profiles.active> 

                     <deploy.url>http://ip:port/manager/text</deploy.url> 

                 </properties> 

             </profile> 

             <profile> 

                 <!-- 生产环境 --> 

                 <id>production</id> 

                 <properties> 

                     <profiles.active>production</profiles.active> 

                     <deploy.url>http:// ip:port /manager/text</deploy.url> 

                 </properties> 

             </profile> 

</profiles>

说明:id是定义打包时候传入的参数;

Properties中定义了两个内置变量,不同的id对应不同的变量值,用于替代打包插件的对应参数。

 

在pom文件的build标签下加入以下配置。

<resources> 

        <resource> 

            <directory>src/main/resources</directory> 

            <!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 --> 

            <excludes> 

                <exclude>test/*</exclude> 

                <exclude>production/*</exclude> 

                <exclude>development/*</exclude> 

            </excludes> 

        </resource> 

        <resource> 

            <directory>src/main/resources/${profiles.active}</directory> 

        </resource> 

</resources>

说明:

第一个directory 结合excludes是排除resources下对应配置文件,不对其打包。

         第二个directory表示指定目录中配置文件进行打包。

         两者结合即可实现resources文件下放置的公共配置文件进行打包处理,对应的打包策略的文件夹内的配置文件进行打包处理。

在pom文件的plugins标签下加入以下配置。

<plugin>

                   <groupId>org.apache.tomcat.maven</groupId>

                   <artifactId>tomcat7-maven-plugin</artifactId>

                   <version>2.0-SNAPSHOT</version>

                   <configuration>

                            <url>${deploy.url}</url>

                            <server>tomcat</server>

                            <path>/XX</path>

                            <update>true</update>

                   </configuration>

</plugin>

说明:url是部署至tomcat的地址,用变量接受,以实现策略发布;

           Server是setting文件中的对应tomcat的server标签值;

           Path是项目发布后的上下文;

           Update为true表示若远程tomcat已有相同上下文的项目时,对其进行跟新。

4、src/main/resources

在所有配置文成后,相应的配置文件也应该依照配置进行相应的结构创建,即在src/main/resources目录下创建三个对应的文件夹,存放相应策略(环境)下的配置文件,在resources文件夹内可以存放公共的配置文件。

注意:不同环境内的配置文件不能和公共配置文件重名,否则将不起作用。

四、   部署
maven部署命令:

默认开发环境:clean package tomcat7:deploy ;

测试环境:clean package tomcat7:deploy –Ptest ;

生产环境:clean package tomcat7:deploy –Pproduction ;

五、   备注
1、tomcat指定远程ip

Tomcat的manager功能也提供了ip过滤,即指定ip的计算机才能使用manager功能实现自动部署。该配置在tomcat根\webapps\manager\META-INF\context.xml中:

<!--

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"

         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

-->

说明:默认是注释掉的,即允许任何ip使用其manager功能

2、tomcat自动部署的路径

         Tomcat的虚拟主机的appBase路径,即为manager自动部署的路径。

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true">

</Host>

说明:倘若使用了虚拟路径<Context docBase="XXX" path="/XXX"reloadable="false" />,manager是不能够将项目部署到该虚拟路径的。



(责任编辑:IT)
------分隔线----------------------------