Maven自动化部署方案 - 2
一、 摘要
关于Maven远程自动部署,有多种不同的方案,前面讲述了使用tomcat7-maven-plugin插件进行实现的方案,其优点是简单快捷,不依赖远程的系统环境,只需开启对应版本的tomcat即可,但这不能满足一些特定的需求,比如服务器不是tomcat、部署的目标地址不在tomcat的appBase中而在服务器的其他目录下。因此该方案采用wagon-maven-plugin插件,该插件的远程部署功能自由多样,但在此我们只列举两种方式:SSH和FTP。
SSH:即使用SSH协议,向远程的SSH服务器进行项目文件的远程发送。对于Linux系统一般情况下已经自带了SSH服务,在此不多叙述,这种情况只需要对maven进行配置即可实现远程部署。
FTP:即使用FTP协议,向远程FTP服务器进行项目文件的远程发送。对于windows系统来说,要想使用SSH协议及服务,需要在系统上安装搭建SSH服务,这样的实现方式成功率不是很高,而在windows上搭建FTP服务却是很容易的事情,相关教程很多,需要注意的是防火墙的设置要允许FTP的相关端口。之后也是对maven进行相应的配置,即可完成远程部署。
二、 环境
Eclipse
Apache Maven 3.3.3
Windows7或Linux(RedHat6.x)
三、 配置
A. SSH
1、 Linux
Linux系统默认安装了SSH服务,若没有开启使用命令servicesshd start启动,并设置允许远程登录,测试正常后即可,若已经可以远程SSH登录,此步骤省略。
2、 Maven
对于maven的配置依然是在其setting文件中加入远程Linux的登录名和密码,这样比较安全:
<server>
<id>webserver</id>
<username>root</username>
<password>root</password>
</server>
3、 Pom
Pom文件中,打包的策略配置参考之前的文章,在此只列举对target目录下war包进行远程部署的相关配置:
<build>
<finalName>XXX</finalName>
<!-- maven远程ssh部署 -->
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<serverId>webserver</serverId>
<fromFile>target/XXX.war</fromFile>
<url>scp://root:root@ip/绝对路径</url>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.10</version>
</extension>
</extensions>
</build>
说明:<fromFile>即为要发送的文件;
<url>中用户名密码(不写应该也行、未测)ip以及绝对路径,需要注意LInix中的对应目录下是否有读写权限。
B. FTP
1、 Windows
Windows下开启FTP服务也有相关的教程,只需简单配置即可,需要注意的地方是防火墙的配置:在控制面板——Windows防火墙——允许程序通过Windows防火墙中将FTP相关勾选。如必要可以单独创建特定的windows用户来使用FTP服务。
2、 Maven
同样需要配置FTP服务器的相关用户名和密码:
<server>
<id>webserver</id>
<username>username</username>
<password>password</password>
</server>
3、 Pom
Pom文件中的相关配置:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<serverId>webserver</serverId>
<fromFile>target/XXX.war</fromFile>
<url>ftp://username:password@ip</url>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
说明:<url>中没有给定相对路径,因为在FTP中给定了具体的物理路径。
四、 部署
maven部署命令:wagon:upload-single;
说明:wagon:upload命令会将项目物理路径下所有文件都进行远程发送。
五、 备注
1、 此方案部署的远程路径任意自定义,但注意要有相应的读写权限,另外防火墙的设置直接影响了远程部署的成败,如果连接有问题,在执行部署命令后可能会报错:Unable to create a Wagon instance for。。。Connection timedout等。
2、 FTP的物理路径建议直接设置成服务器(tomcat)的项目部署路径,并且允许读写权限。