废话不多说,直接上干货
1、在本地maven的settings.xml中的servers节点,增加一个server配置。id随便取,唯一即可,username是远程服务器的登录用户名,password是远程服务器的密码
<server> <id>webserver</id> <username>root</username> <password>123456</password> </server>
2、在maven项目的pom文件中增加以下配置:
<build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>2.8</version> </extension> </extensions> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>wagon-maven-plugin</artifactId> <version>1.0</version> <executions> <execution> <id>upload-deploy</id> <phase>package</phase> <goals> <goal>upload-single</goal> <goal>sshexec</goal> </goals> <configuration> <serverId>webserver</serverId> <fromFile>target/project.jar</fromFile> <url>scp://root@10.105.17.201/root/project</url> <commands> <command>/root/project/boot.sh start</command> </commands> </configuration> </execution> </executions> </plugin> </plugins> </build>
2、execution中的id随便取;phase表示在maven的package之后执行上传;goals指定执行wagon插件的任务列表,这里指定两个:一个上传,一个执行shell命令;configuration中的serverId对应上面添加的server的id;fromFile是待上传的文件路径;url是上传的远程服务器地址;格式为:scp://username@ip/path;command节点可以添加shell命令或运行shell脚本,支持同时添加多个command;
3、执行maven的clean package即可自动部署jar包/war包到远程服务器并执行指定shell脚本
当然,wagon-maven-plugin还可以通过其他配置来部署应用,对应的也可以通过clean wagon:upload wagon:sshexec 等命令来执行上传、运行shell等功能。上面介绍的方式是站长自己实践过,认为最不容易出问题的方式,欢迎大家留言讨论。