wagon-maven-plugin实现自动打包部署到服务器
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.

                
            
        
浙公网安备 33010602011771号