如何实现java调用shell脚本并部署vue项目

ppylox
·2/19/2022·3 阅读

最近给网站加了一个通过shell脚本部署的功能,通过前台调用后台java接口,java再调用shell脚本实现部署。


目前后台管理系统跟门户系统都实现了部署功能,这个过程涉及到两个功能点,一是java调用shell脚本文件,二是vue项目或者Nuxt项目本身的编译脚本。

在java代码实现的过程中遇到了一些问题,主要的问题就是java无法调用到shell文件,调用到shell文件没执行。


\n\n\n

后面总结了一下主要还是文件路径跟权限两个问题,文件路径要正确,再给加上可执行权限,一下为Java参考代码:

String shpath = /www/wwwroot/test.sh; //.sh文件的绝对路径\nProcess process = null;\nList<String> processList = new ArrayList<String>();\ntry {\n    // 修改权限,否则无效\n    String chmod = "chmod 777 " + shpath;\n    Process proc = Runtime.getRuntime().exec(chmod);\n    process = Runtime.getRuntime().exec(shpath);\n    process.waitFor();\n    BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));\n    String line = "";\n    while ((line = input.readLine()) != null) {\n        processList.add(line);\n    }\n    input.close();\n} catch (IOException | InterruptedException e) {\n    e.printStackTrace();\n}\n\nfor (String line : processList) {\n    System.out.println(line);\n}\n


对于vue项目来说通过shell编译相对简单,主要执行npm run build这个命令,以下为vue项目编译build.sh参考代码:

#!/bin/bash\n#输出当前系统的所有PATH值\necho $PATH\npwd\ncd /www/wwwroot/test\npwd\nnode -v\nnpm -v\ngit clone https://gitee.com/wilkwo/vueAdmin.git\ncd vueAdmin\necho "---------pull code start--------"\ngit pull\necho "---------pull code end--------"\nsudo npm i --ignore-scripts\nsudo npm run build\nsudo rm dist.tar\nsudo tar -cvf dist.tar dist\nsudo cp -rf dist.tar ../\ncd ../\npwd\nsudo tar -xvf dist.tar\nsudo rm -rf index.html\nsudo rm -rf static\nsudo mv -f dist/* ./\nsudo rm -rf dist\nsudo rm -rf dist.tar


nuxt项目的shell编译命令相对vue项目来说会稍微复杂一点,主要是对.nuxt目录做一些操作,以下为nuxt项目编译build.nuxt.sh参考代码:

#!/bin/bash\n#输出当前系统的所有PATH值\npwd\nnode -v\ncd /www/wwwroot/test2\ngit clone https://gitee.com/wilkwo/nuxt-web.git\ncd nuxt-web\necho "---------start pull code--------"\ngit pull\necho "---------end pull code--------"\n\nnpm i\nnpm run build\nsudo rm dist.tar\nsudo tar -cvf dist.tar .nuxt static  package.json nuxt.config.js\nsudo cp -rf dist.tar /www/wwwroot/www.dsiab.com/\ncd /www/wwwroot/www.dsiab.com\necho "---------显示当前目录---------"\npwd\necho "---------显示当前目录---------"\n\n#sudo rm -rf static\nsudo rm -rf plugins\nsudo rm -rf store\nsudo rm -rf assets\nsudo rm -rf layouts\nsudo rm -rf components\nsudo rm -rf pages\nsudo rm -rf middleware\n\ntar -xvf dist.tar\n\n#sudo mv -f dist/* ./\nsudo rm -rf dist.tar\n
## 其中www.dsiab.com为之前已经通过PM2启动的nuxt项目名称 \nsudo pm2 restart www.dsiab.com\n


最后记得通过pm2重启nuxt应用


评论 (0)

暂无评论,来写第一条吧