利用maven发布web项目到远程服务器

来源:互联网 发布:八字预测软件下载 编辑:程序博客网 时间:2024/06/05 08:58

  项目发布的一般步骤是本地打好war包,然后通过ssh连接远程服务器,通过xftp等方法,将项目上传到远程tomcat中,操作和过程较为繁琐。
  通过maven可以一次完成全部工作,只需一行命令即可。
  本文远程服务器使用tomcat7。maven发布方式,使用的是tomcat的manage控制台进行项目发布的。即启动tomcat后显示的主页。
tomcat mange console
tomcat manger console使用户可以直接增加或者发布新的应用,重启,停掉,卸载当前应用。默认是禁用状态,需要使用相应用户角色和授予权限才能使用。所以需要先配置tomcat用户权限。在tomcat安装目录下conf文件夹中的tomcat-users.xml中新增:

<role rolename="admin-gui"/><role rolename="admin-script"/><role rolename="manager-gui"/><role rolename="manager-script"/><role rolename="manager-jmx"/><role rolename="manager-status"/><role rolename="admin"/><role rolename="manager"/><user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui,admin,manager"/>

Tomcat Manager 4种角色的大致介绍(下面URL中的*为通配符):

manager-gui
允许访问html接口(即URL路径为/manager/html/*)
manager-script
允许访问纯文本接口(即URL路径为/manager/text/*)
manager-jmx
允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)
manager-status
允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)

从Tomcat Manager内部配置文件中可以得知,manager-gui、manager-script、manager-jmx均具备manager-status的权限,也就是说,manager-gui、manager-script、manager-jmx三种角色权限无需再额外添加manager-status权限,即可直接访问路径”/manager/status/*”。

第二步在maven项目中添加maven-compiler-plugin、tomcat7-maven-plugin、maven-surefire-plugin和maven-war-plugin组件。
顾名思义:
maven-compiler-plugin:用来使用指定jdk编译java项目源。
tomcat7-maven-plugin:对tomcat7中的war包进行解包等操作。
maven-surefire-plugin:在项目构建过程中执行单元测试。
maven-war-plugin:收集与web应用有关的所有资源,将项目打成war包。

pom.xml中新增如下设置:

<!-- 设置资源编码 --><properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>    </properties>    <packaging>war</packaging>    <build>        <finalName>rspsm-dp-plus-console</finalName>        <defaultGoal>compile</defaultGoal>        <plugins>            <!-- 编译相关插件,1.7是jdk版本 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.5.1</version>                <configuration>                    <source>1.7</source>                    <target>1.7</target>                </configuration>            </plugin>            <!--tomcat插件  -->            <plugin>                <groupId>org.apache.tomcat.maven</groupId>                <artifactId>tomcat7-maven-plugin</artifactId>                <version>2.1</version>                <configuration>                    <!-- tomcat地址,manager/text该地址可追加命令 -->                          <!--http://localhost:8080/manager/stop?path=/ //停止 -->                                                                                <!--http://localhost:8080/manager/start?path=/ //启动 --><!--http://localhost:8080/manager/text/deploy?path=/ //部署 --><!--http://localhost:8080/manager/text/undeploy?path=/ //卸载 -->                    <url>http://172.23.26.61:8080/manager/text</url><!-- 远程服务器url地址 -->                    <username>tomcat</username>                    <password>tomcat</password>                    <!-- 此处的名字是项目发布的工程名-->                    <path>/rspsm-dp-plus-console</path>                </configuration>            </plugin>            <!-- 忽略项目中测试错误,在发布过程中会运行项目中的测试代码-->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>                <configuration>                    <testFailureIgnore>true</testFailureIgnore>                </configuration>            </plugin>            <!-- war插件-->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-war-plugin</artifactId>                <version>3.0.0</version>                <configuration>                    <webResources>                        <resource>                            <!-- WEB-INF文件地址,idea是web,eclipse是webRoot-->                            <directory>\src\main\webapp</directory>                        </resource>                    </webResources>                </configuration>            </plugin>        </plugins>    </build>

在idea terminal中cd到要发布的模块,输入maven命令。

mvn tomcat7:deploy

项目将以war包形式自动发布到远程服务器。
注意使用maven对项目进行发布时,首先要保证远程服务器在启动状态,不然会报异常:

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:deploy (default-cli) on project rspsm-dp-plus-console: Cannot invoke Tomcat manager: Connection to http://172.23.26.61:8080 refused: Connection refused: connect

同时要保证tomcat7-maven-plugin的url配置为 “服务器url/manager/text” 因
为发布使用的是manager/text的api。否则会报异常:

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:deploy (default-cli) on project rspsm-dp-plus-console: Cannot invoke Tomcat manager: Connection reset by peer: socket write error
原创粉丝点击