简介
利用 Maven Mojo 功能一键部署 jar 包或 war 包到远程服务器上。
配置
在 maven 的setting.xml
配置服务器 SSH 账号密码。虽然可以在工程的 pom.xml 直接配置,但那样不太安全。
<servers><server><id>iq</id><configuration><StrictHostKeyChecking>no</StrictHostKeyChecking></configuration><username>user</username><password>pass</password></server>
</servers>
在工程的 pom.xml配置:
<!--一键部署到服务器 SSH--><plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>2.0.2</version><executions><execution><id>upload-deploy</id><!-- 运行package打包的同时运行upload-single和sshexec --><phase>package</phase><goals><goal>upload-single</goal><goal>sshexec</goal></goals><configuration><!-- 指定 SSH 账号 --><serverId>xxx-dell</serverId><!-- 要更新的 jar 包 --><fromFile>target/xxxx.jar</fromFile><!-- 服务器部署位置 --><url><![CDATA[ scp://192.168.1.3/data/xxx ]]></url><!-- 重启脚本 先切换目录,才能正确执行脚本 --><commands><command>cd /data/car-short;./startup.sh</command></commands><!-- 显示运行命令的输出结果 --><displayCommandOutputs>true</displayCommandOutputs></configuration></execution></executions></plugin>
坑
如果出现“算法不正确”,那么要升级 wagon-ssh,网上都是 2.8 的,太旧了,这是最新的版本,在 pom.xml–build 下面:
<!--一键部署到服务器 SSH--><extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>3.5.3</version></extension></extensions>
如果出现下面异常,就是不能写入你用户目录。
Wagon Connection aborted - failed to write to known_hosts
解决方法:进入 CMD,在当前用户目录下(windows)新建目录.ssh
,
这个不能直接新建目录,手动执行mkdir .ssh
。
另外如果还不行,则配置 maven 的setting.xml
:
<servers><server><id>iq</id><configuration><StrictHostKeyChecking>no</StrictHostKeyChecking></configuration><username>user</username><password>pass</password></server>
</servers>
参见
- Maven插件wagon-maven-plugin自动化部署Java项目到Linux远程服务器
- maven wagon-maven-plugin 实现远程部署