如何编写Linux环境下自动部署Java JAR包的脚本?

2026-05-17 03:281阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计535个文字,预计阅读时间需要3分钟。

如何编写Linux环境下自动部署Java JAR包的脚本?

环境中需配置git、maven、Java,且git需连接到仓库。创建文件vim+jar.sh,复制以下内容并粘贴:

bash#!/bin/bashecho 复制以下内容到文件中:echo git clone echo mkdir projectecho cd projectecho mvn clean installecho java -jar echo ESCecho Shiftecho :wqecho 回车保存并退出

使用ESC+Shift+:wq保存并退出。

环境中需要有git、maven、java,并且git能连接到仓库

创建两个文件

vim jar.sh

将下面的内容复制粘贴

ESC

Shift+:

wq

回车保存

如何编写Linux环境下自动部署Java JAR包的脚本?

#!/bin/bash ####################### #脚本使用方法: #本脚本和jar包在同一目录下,保证当前目录有且只有一个jar包即可。无需修改任何东西。 # Usage: $0 {start|stop|status|restart|log} ####################### #可在此处添加需要加载的环境变量 ####################### if ls *.jar &>/dev/null; then if [ $(ls *.jar | wc -l) -eq 1 ]; then APP_NAME=$(find -maxdepth 1 -name "*.jar") else echo -e "\033[31m------ Error! Too Much JAR Packages In This Directory !\033[0" exit 2 fi else echo -e "\033[31m------ Error! No JAR Package In Current Directory !\033[0" exit 1 fi exist() { pid=$(ps aux | grep "$APP_NAME" | grep -v grep | grep "jar$" | awk '{print $2}') if [ -z "$pid" ]; then return 1 else return 0 fi } start() { exist if [ $? -eq 0 ]; then echo "${APP_NAME} is already running. pid is ${pid}." else nohup java -jar "$APP_NAME" &>nohup.out & fi } stop() { exist if [ $? -eq 0 ]; then kill -9 "$pid" else echo "${APP_NAME} is not running" fi } status() { exist if [ $? -eq 0 ]; then echo "${APP_NAME} is running. pid is ${pid}." else echo "${APP_NAME} is not running" fi } log() { tail -9999f nohup.out } case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; log) log ;; *) echo "Usage: $0 {start|stop|status|restart|log}" ;; esac

vim redeploy.sh

将下面的内容复制粘贴保存

#!/bin/bash #仓库路径 repository_dir='/project/matelinepickservice' #项目部署路径 project_dir=$(pwd) #需要复制过去的文件列表 copy_file_list=('auto-pick-service.jar' 'app-release.apk' 'application.yaml') #拉取项目 git --git-dir="${repository_dir}/.git" --work-tree="${repository_dir}/" pull #maven打包 mvn -f "${repository_dir}/pom.xml" -DskipTests=true clean package #复制文件到项目部署路径 for file in ${copy_file_list[*]}; do \cp -rf "${repository_dir}/target/${file}" "${project_dir}/${file}" chmod -R 755 "${project_dir}/${file}" done source "${project_dir}/jar.sh" restart

然后将两个文件放在需要部署的目录下,redeploy.sh脚本中的仓库路径需要自己配置,git仓库需要设置记住密码,配置完成之后执行 sh redeploy.sh就可以自动拉取项目并自动部署运行

jar.sh还有别的一些功能,方便调试

本文共计535个文字,预计阅读时间需要3分钟。

如何编写Linux环境下自动部署Java JAR包的脚本?

环境中需配置git、maven、Java,且git需连接到仓库。创建文件vim+jar.sh,复制以下内容并粘贴:

bash#!/bin/bashecho 复制以下内容到文件中:echo git clone echo mkdir projectecho cd projectecho mvn clean installecho java -jar echo ESCecho Shiftecho :wqecho 回车保存并退出

使用ESC+Shift+:wq保存并退出。

环境中需要有git、maven、java,并且git能连接到仓库

创建两个文件

vim jar.sh

将下面的内容复制粘贴

ESC

Shift+:

wq

回车保存

如何编写Linux环境下自动部署Java JAR包的脚本?

#!/bin/bash ####################### #脚本使用方法: #本脚本和jar包在同一目录下,保证当前目录有且只有一个jar包即可。无需修改任何东西。 # Usage: $0 {start|stop|status|restart|log} ####################### #可在此处添加需要加载的环境变量 ####################### if ls *.jar &>/dev/null; then if [ $(ls *.jar | wc -l) -eq 1 ]; then APP_NAME=$(find -maxdepth 1 -name "*.jar") else echo -e "\033[31m------ Error! Too Much JAR Packages In This Directory !\033[0" exit 2 fi else echo -e "\033[31m------ Error! No JAR Package In Current Directory !\033[0" exit 1 fi exist() { pid=$(ps aux | grep "$APP_NAME" | grep -v grep | grep "jar$" | awk '{print $2}') if [ -z "$pid" ]; then return 1 else return 0 fi } start() { exist if [ $? -eq 0 ]; then echo "${APP_NAME} is already running. pid is ${pid}." else nohup java -jar "$APP_NAME" &>nohup.out & fi } stop() { exist if [ $? -eq 0 ]; then kill -9 "$pid" else echo "${APP_NAME} is not running" fi } status() { exist if [ $? -eq 0 ]; then echo "${APP_NAME} is running. pid is ${pid}." else echo "${APP_NAME} is not running" fi } log() { tail -9999f nohup.out } case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; log) log ;; *) echo "Usage: $0 {start|stop|status|restart|log}" ;; esac

vim redeploy.sh

将下面的内容复制粘贴保存

#!/bin/bash #仓库路径 repository_dir='/project/matelinepickservice' #项目部署路径 project_dir=$(pwd) #需要复制过去的文件列表 copy_file_list=('auto-pick-service.jar' 'app-release.apk' 'application.yaml') #拉取项目 git --git-dir="${repository_dir}/.git" --work-tree="${repository_dir}/" pull #maven打包 mvn -f "${repository_dir}/pom.xml" -DskipTests=true clean package #复制文件到项目部署路径 for file in ${copy_file_list[*]}; do \cp -rf "${repository_dir}/target/${file}" "${project_dir}/${file}" chmod -R 755 "${project_dir}/${file}" done source "${project_dir}/jar.sh" restart

然后将两个文件放在需要部署的目录下,redeploy.sh脚本中的仓库路径需要自己配置,git仓库需要设置记住密码,配置完成之后执行 sh redeploy.sh就可以自动拉取项目并自动部署运行

jar.sh还有别的一些功能,方便调试