使用Maven打包项目并上传到Linux服务器


在我们日常开发中,我们经常会使用maven来构建项目,项目构建之后通常会使用ssh远程连接主机并上传到服务器上去部署,你有没有想过使用maven提供的插件一键即可完成,这样对于我们开发来说,不仅节省时间还省去了许多麻烦的问题,何乐而不为呢,下面我们将通过实际的需求来解决这个问题。

第一步:我们需要配置maven的settings.xml文件,在下面的选项中打开 open file 这个连接,Eclipse会打开该文件,

 
Setting

之后我们需要定位到<servers></servers>节点,我们根据它提供的Demo,复制一个即可,下面是我选择的一个server配置节点。


 
Server configuration

其中server中的节点配置,id为网络id可随意命名,但是我们要记住,因为稍后的时间我们需要使用到,username则是连接到远程主机的用户名,password则是远程主机的密码,这一步配置好了之后,基本上就完成了maven的基本配置了。

第二步:这个步骤就需要加入maven的插件来支持远程操作了,在项目的pom.xml中配置wagon-maven-plugin插件:

<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> <dependencies> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId> <version>1.46</version> </dependency> </dependencies> <configuration> <serverId>doudizhu</serverId> <fromFile>target/LePoker.jar</fromFile> <url>scp://192.168.1.201/data/ddz</url> <commands> <command>sh /data/project/app/manager.sh stop</command> <command>rm -rf /data/project/app/Project.jar</command> <command>sh /data/ddz/manager.sh start</command> <command>pkill -f Project.jar</command> <command>nohup java -jar /data/project/app/Project.jar > /data/project/app/logs/monitor.log 2>&amp;1 &amp;</command> </commands> <!-- 显示运行命令的输出结果 --> <displayCommandOutputs>true</displayCommandOutputs> </configuration> </plugin> </plugins> </build> 

需要注意的是这里的serverId需要配置成我们上一个步骤配置的deploymentRepo,不然可能会提示你找不到,或者你也可以省略上一个步骤,直接在url节点中指定远程主机的用户名和密码即可,这里不过多饶舌了。完成了上面步骤之后,就可以使用maven的命令来构建项目了,然后你就。。。会得到一个大大的错误:

mvn clean package wagon:upload-single 

错误:

[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- wagon-maven-plugin:1.0:upload-single (default-cli) @ LePoker --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 23.018 s [INFO] Finished at: 2017-12-08T09:03:00+08:00 [INFO] Final Memory: 31M/306M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0:upload-single (default-cli) on project LePoker: Unable to create a Wagon instance for scp://192.168.1.201/project/app: Cannot connect. Reason: Session.connect: java.security.NoSuchAlgorithmException: Algorithm DH not available -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

这个异常提示java.security.NoSuchAlgorithmException: Algorithm DH not available,Algorithm DH这个算法不可用,这时候我们就不知道如何下手了,经过我一波搜索,总算找到了解决方案了,那就是看下一个步骤。

第三步:完成了上两个步骤,我们得到了一个大大的异常,以至于我们辗转发侧,难以入眠,为了打破这个异常,我们接下来解决这个问题。首先我们需要定位问题,这个异常提示我们找不到DH这个算法,所以我们就添加一个算法不就可以了吗,具体步骤如下:
C:\xxx\Java\jdk1.8.0_131\jre\lib\ext 目前小编我的计算机java目录如下,进入该目录,然后你会发现这个文件夹下面有很多的jar包,我们不管它们干什么用的,我们先打开浏览器,下载:bcprov-jdk16-1.46.jar 这个文件,下载完成之后复制到我们的C:\xxx\Java\jdk1.8.0_131\jre\lib\ext这个目录即可,然后最后一步并是指定该算法即可,打开目录C:\xxx\Java\jdk1.8.0_131\jre\lib\security 文件夹,定位到java.security文件,打开该文件然后定位到

# # List of providers and their preference orders (see above): # security.provider.1=sun.security.provider.Sun security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=sun.security.ec.SunEC security.provider.4=com.sun.net.ssl.internal.ssl.Provider security.provider.5=com.sun.crypto.provider.SunJCE security.provider.6=sun.security.jgss.SunProvider security.provider.7=com.sun.security.sasl.Provider security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.9=sun.security.smartcardio.SunPCSC security.provider.10=sun.security.mscapi.SunMSCAPI # 这一行并是我们新增的内容,指定其算法的提供者为我们刚提供的jar包中的算法 security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider 

完成了以上步骤之后,我们再使用maven的命令重新构建一下项目即可完成构建并上传到服务器上去了。

mvn clean package wagon:upload-single 

上面的命令只提供了上传文件到服务器,如果需要执行命令还需要增加如下命令:

package wagon:upload-single wagon:sshexec 

成功的信息打印如下:

[INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Project 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- wagon-maven-plugin:1.0:upload-single (default-cli) @ Project --- [INFO] Uploading: D:\Workspace\Code\Project \target\Project .jar scp://192.168.1.201/data/project/app/Project .jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.164 s [INFO] Finished at: 2017-12-08T09:17:50+08:00 [INFO] Final Memory: 43M/423M [INFO] ------------------------------------------------------------------------ 

到此我们便完成了一键部署的操作了。


 


作者:安静点就睡吧
链接:https://www.jianshu.com/p/15f93a09fe15
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM