使用wagon-maven-plugin插件自动部署项目到远程服务器,并执行shell脚本

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等功能。

相关推荐
非优秀程序员9 小时前
第04章 邮箱大战,163 与 QQ 的暗战|《互联网产品恩仇录》
java·vue.js·架构
知已难寻9 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
文丑颜不良啊12 小时前
LeetCode2481~2500题目解析
java·leetcode
Flynn Liang13 小时前
同一需求三套写法:用 Spring AI、LangChain4j、AgentScope Java 各实现一个带工具调用的 RAG 助手(实战对比)
java·人工智能·大模型·架构设计·spring ai·langchain4j·agentscope
聪明的笨猪猪13 小时前
实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑
java·经验分享·面试·ai编程
愿有所息13 小时前
记一次 ARM64 + JDK8 上 fastjson2 的诡异数据错乱
java
秋饼14 小时前
MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地
java·ai·技术分享·后端开发
SL_staff15 小时前
JVS-BI 实战:业务人员如何用零代码 ELT + 可视化配置构建实时经营分析闭环
java·spring·全栈
SL_staff15 小时前
企业AI落地难?JVS-AI渐进式实践:安全可控、小切口验证、标准化沉淀与规模化复制
java·开源·aigc
星恒随风16 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql