Maven: 自动远程部署
1. 在settings.xml中的Servers节点中增加Server的登录信息:
1 <server> 2 <id>deploy_server_65</id> 3 <username>username</username> 4 <password>password</password> 5 </server>
2. 在pom中的build节点增加extensions内容:
1 <extensions> 2 <extension> 3 <groupId>org.apache.maven.wagon</groupId> 4 <artifactId>wagon-ssh</artifactId> 5 <version>2.10</version> 6 </extension> 7 </extensions>
3. 在plugin中增加plug
1 <plugin> 2 <groupId>org.codehaus.mojo</groupId> 3 <artifactId>wagon-maven-plugin</artifactId> 4 <version>1.0</version> 5 <configuration> 6 <serverId>deploy_server_65</serverId> 7 <commands> 8 <!-- 删除之前文件 --> 9 <command>rm -rf /var/lib/hadoop-hdfs/bigdata-stat-3.2.1.jar</command> 10 </commands> 11 <displayCommandOutputs>true</displayCommandOutputs> 12 <!-- 需要部署的文件 --> 13 <fromFile>target/bigdata-stat-3.2.1.jar</fromFile> 14 <!-- 部署目录 --> 15 <url>scp://root@10.1.108.65/var/lib/hadoop-hdfs</url> 16 </configuration> 17 </plugin>
4. 在命令行执行:
mvn clean package wagon:sshexec wagon:upload-single
5. plug-in绑定生命周期方式
但是这种方式还需要在命令行指定插件以及目标(goals),还可以将插件绑定到Maven的生命周期中,让其自动执行:
1 <plugins> 2 <plugin> 3 <groupId>org.codehaus.mojo</groupId> 4 <artifactId>wagon-maven-plugin</artifactId> 5 <version>1.0</version> 6 <executions> 7 <execution> 8 <id>upload-deploy</id> 9 <!-- 运行package打包的同时运行upload-single和sshexec --> 10 <phase>package</phase> 11 <goals> 12 <goal>sshexec</goal> 13 <goal>upload-single</goal> 14 </goals> 15 <configuration> 16 <serverId>deploy_server_65</serverId> 17 <!-- 需要部署的文件 --> 18 <fromFile>target/bigdata-stat-3.2.1.jar</fromFile> 19 <!-- 部署目录 --> 20 <url>scp://root@10.1.108.65/var/lib/hadoop-hdfs</url> 21 <commands> 22 <!-- 删除之前文件 --> 23 <command>rm -rf /var/lib/hadoop-hdfs/bigdata-stat-3.2.1.jar</command> 24 </commands> 25 <displayCommandOutputs>true</displayCommandOutputs> 26 </configuration> 27 </execution> 28 </executions> 29 </plugin> 30 </plugins>
可以看到,增加了executors/executor节点,并在节点中通过phase节点了plugin执行的阶段以及<goals>节点指令了执行的目标。