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

注:本方法在商用项目的运行时存在安全风险!不推荐在商用化项目正式部署中使用,目的仅在于提升项目开发过程调试的便利性,以及自己的练习。仅作为快速部署项目的一种参考和实现手段。
  项目发布的一般步骤是本地打好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: Connec
tion 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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值