使用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