首页 > 其他分享 >wagon-maven-plugin实现自动打包部署到服务器

wagon-maven-plugin实现自动打包部署到服务器

时间:2022-09-28 11:03:20浏览次数:80  
标签:wagon lib plugin true upload maven soft

https://dandelioncloud.cn/article/details/1489379549476671490

1.在maven中添加依赖

            <dependency>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>2.0.2</version>
            </dependency>

2.在pom的build节点添加wagon-ssh

<build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>2.8</version>
            </extension>
        </extensions>
</build>

3.在plugins下添加配置

<plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>2.0.2</version>
                <executions>
                    <!-- ============ ============ ============ 测试 ============ ============ ============-->
                    <execution>
                        <id>devupload-one</id>
                        <!-- 运行package打包的同时运行upload-single和sshexec -->
                        <!--phase/阶段-->
                        <phase>package</phase>
                        <goals>
                            <goal>upload-single</goal>
                            <goal>sshexec</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                            <!-- 拷贝目录下(执行目录) target目录下的jar包 -->
                            <fromFile>target/lib/java-3.4.0.jar</fromFile>
                            <!-- 使用scp传输文件 指定服务端 用户名密码 ip 并指定目标文件夹-->
                            <url>scp://${user}:${password}@${ip}/home/soft/fultron/lib</url>
                            <!-- 命令列表 可以在传输完成后执行 -->
                            <commands>
                                <command>sh /home/soft/startsystem.sh restart</command>
                            </commands>
                            <!-- 显示运行命令的输出结果 -->
                            <displayCommandOutputs>true</displayCommandOutputs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>devupload-all</id>
                        <!-- 运行package打包的同时运行upload-single和sshexec -->
                        <phase>package</phase>
                        <goals>
                            <goal>upload</goal>
                            <goal>sshexec</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                            <!-- 拷贝目录下(执行目录) target目录下的jar包 -->
                            <fromDir>target/lib</fromDir>
                            <!-- 使用scp传输文件 指定服务端 用户名密码 ip 并指定目标文件夹-->
                            <url>scp://${user}:${password}@${ip}/home/soft/fultron/lib</url>
                            <commands>
                                <command>sh /home/soft/startsystem.sh restart</command>
                            </commands>
                        </configuration>
                    </execution>
                    <!-- ============ ============ ============ 生产 ============ ============ ============-->
                    <execution>
                        <id>produpload-one</id>
                        <!-- 运行package打包的同时运行upload-single和sshexec -->
                        <!--phase/阶段-->
                        <phase>package</phase>
                        <goals>
                            <goal>upload-single</goal>
                            <goal>sshexec</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                            <!-- 拷贝目录下(执行目录) target目录下的jar包 -->
                            <fromFile>target/lib/java-3.4.0.jar</fromFile>
                            <!-- 使用scp传输文件 指定服务端 用户名密码 ip 并指定目标文件夹-->
                            <url>scp://root:password@ip/data/soft/lib</url>
                            <!-- 命令列表 可以在传输完成后执行 -->
                            <commands>
                                <command>sh /data/soft/startsystem.sh restart</command>
                            </commands>
                            <!-- 显示运行命令的输出结果 -->
                            <displayCommandOutputs>true</displayCommandOutputs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>produpload-all</id>
                        <!-- 运行package打包的同时运行upload-single和sshexec -->
                        <phase>package</phase>
                        <goals>
                            <goal>upload</goal>
                            <goal>sshexec</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                            <!-- 拷贝目录下(执行目录) target目录下的jar包 -->
                            <fromDir>target/lib</fromDir>
                            <!-- 使用scp传输文件 指定服务端 用户名密码 ip 并指定目标文件夹-->
                            <url>scp://root:password@ip/data/soft/lib</url>
                            <commands>
                                <command>sh /data/soft/startsystem.sh restart</command>
                            </commands>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

4.说明

 <skip>true</skip> 来控制是否运行execution,true 表示不执行,false 表示执行

 <fromFile>target/lib/java-3.4.0.jar</fromFile>           本地目录,从哪上传,这里指定不是目录,是单个文件

 <fromDir>target/lib</fromDir>                                   本地目录,从哪上传,这里指定的是目录,不是单个文件

 <goal>upload</goal>  <goal>upload-single</goal> 表示上传,其中upload只能上传目录,upload-single只能上传单独的文件 

 <goal>sshexec</goal>                                             表示执行 服务器命令

 <excludes>logback-spring.xml</excludes>-->         过滤你不想要的文件

 <toDir>/home/hdkg/ATC/temp</toDir>                    如果没有toDir,url要写完整路

 <url>scp://root:password@ip/data/soft/lib</url>      服务器IP地址

 <displayCommandOutputs>true</displayCommandOutputs>     是否显示Shell命令

5.打包

打包命令 mvn clean install

如果没有以下配置

               <goals>
                            <goal>upload</goal>
                            <goal>sshexec</goal>
                        </goals>

则需要按配置改成下面

mvn wagon:upload-single -f upload.xml 这个是上传单独文件。例如jar包这样一类的

mvn wagon:upload -f upload.xml 这个是上传多文件,可以整个目录

6.参考

官网参考地址 http://www.mojohaus.org/wagon-maven-plugin/upload-single-mojo.html

主要提供如下几个goal

wagon:upload-single uploads the specified file to a remote location.

wagon:upload uploads the specified set of files to a remote location.

wagon:download-single downloads the specified file from a remote location.

wagon:download downloads the specified set of files from a remote location.

wagon:list lists the content of a specified location in a remote repository.

wagon:copy copies a set of files under a Wagon repository to another.

wagon:merge-maven-repos merges , including metadata, a Maven repository to another.

wagon:sshexec Executes a set of commands at remote SSH host.

标签:wagon,lib,plugin,true,upload,maven,soft
From: https://www.cnblogs.com/hanby/p/16737235.html

相关文章

  • docker集成分词器时报Caused by: java.nio.file.FileSystemException: /usr/share/ela
    官网https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.8.6下载好的zip包cp到/usr/share/elasticsearch/plugins/下后解压它会带有一个config包,或者......
  • 1.SSM框架 maven模块+oracle+注解开发
    一、SSM框架maven模块+oracle+注解开发1.初始化数据库--创建表空间语句createtablespacessm_69datafile'c:\ssm_69.dbf'size100mautoextendonnext10m;--创建用......
  • P4 MAVEN的目录结构
    #4MAVEN的目录结构和手动创建MAVEN项目##4.1MAVEN的目录结构   5MAVEN项目的编译和启动5.1准备工作第一次会下载很多包,要改变一下下载路径会下载很多......
  • P2(从2开始的) MAVEN的简介
    注:笔记内容摘抄自视频,侵权删!3项目构建工具摘要:新型公司使用grandle4Maven四大特性4.1依赖管理系统听不太懂,大概就是下载jar包只需要配置,不需要手动下载4.2多模......
  • vue3 基础-插件 plugin
    前几篇我们介绍了mixin混入的的方式能实现对代码的复用,而本篇将要介绍的plugin将会更加适合这种通用性功能的代码的复用和扩展.最常用的场景,比如轮播图就非常实用......
  • Maven的下载安装
    1、下载地址https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/2、版本选择这里要注意的是idea与maven版本兼容的问题,idea只兼容它之前的maven版本;使用的i......
  • maven生命周期和插件
    生命周期和插件是maven的两个核心概念。在maven日常使用中,命令行的输入往往就对应了生命周期。如mvnpackage就表示执行默认生命周期阶段package。maven生命周期是抽象的,其......
  • maven 加速镜像 阿里云
    maven配置文件地址:D:\Soft\apache-maven-3.6.1\conf\settings.xml 在<mirrors>节点下增加: <!--阿里云仓库--><mirror><id>alimavencentra......
  • spring boot项目用maven插件执行package打包命令后不生成target文件夹
    用maven插件执行package打包命令后不生成target文件夹点击>Reloadfromdisk后搞定唔这应该是idea的bug吧......
  • Linux安装Maven
    Maven功能:Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。Maven官网:Maven–DownloadA......