简介
利用 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>