如何实现linux系统一键gitee拉取java代码maven打包并启动服务(启动脚本)

萨瓦迪卡5个月前 (01-15)linux系统418

总的步骤分为:1检查git是否安装。2.linux设置git全局用户名密码.3.git拉取项目及分支到linux目录4.linux安装maven。5编写脚本,一键启动服务

一、.查看git版本,一般linux系统都自带git。

  1. git version

二、linux git 设置全局用户名密码

git config --global user.name "Your Name"
git config --global user.password"your password"

   或者使用ssh密钥

  1. 生成 SSH 密钥对(如果还没有):

    sh复制代码ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. 将生成的公钥(通常位于 ~/.ssh/id_rsa.pub)添加到你的 Git 服务器帐户中。

三.git拉取代码

1.导航到目标目录你想将仓库放在你的主目录下的 projects 文件夹中,运行

cd ~/projects

2.使用 git clone 命令来克隆远程仓库

git clone https://git.com/username/repository-name.git

3.(可选)进入仓库目录如果你想立即进入克隆的仓库目录,可以运行:

cd repository-name

4.拉取更新(如果你已经有一个本地仓库)如果你已经有一个本地仓库并且只是想拉取最新的更改,你可以导航到仓库目录并运行:

git pull origin branch-name

其中 origin 是远程仓库的默认名称branch-name 是你想要拉取的分支名称。例如,如果你要拉取 main 分支:

git pull origin main

四.linux安装maven

1.方法一:使用包管理器安装。


Ubuntu/Debian 系统安装 Maven:(如果是root用户,请自行去掉sudo)

sudo apt install maven -y

验证安装:

mvn -v


 CentOS/RHEL 系统安装 Maven

sudo yum install maven -y

2方法二:手动下载并安装


五.写一个启动脚本java-run.sh。内容为:根据需要修改。将文件直接放到root下面

#!/bin/bash

# 定义变量
TARGET_DIR="/project/wisdom"          # 替换为你的代码库路径
DEFAULT_BRANCH="pro1"                                 # 默认分支
JAR_NAME="ruoyi-admin.jar"                               # 替换为生成的 JAR 文件名
LOG_FILE="/var/log/ruoyi-admin.log"                     # 替换为你的日志文件路径
JAVA_OPTS="-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"                           # Java 启动参数,可根据需求调整

# 检查是否安装了必要工具
check_dependencies() {
    for cmd in git mvn java; do
        if ! command -v $cmd &> /dev/null; then
            echo "Error: $cmd is not installed. Please install it first."
            exit 1
        fi
    done
}

# 更新代码
update_code() {
    local branch=$1
    if [ -d "$TARGET_DIR" ]; then
        echo "Updating repository in $TARGET_DIR for branch $branch..."
        cd "$TARGET_DIR" || exit
        
        # 切换到指定分支
        git fetch
        git checkout "$branch" || {
            echo "Error: Branch $branch does not exist."
            exit 1
        }
        git pull origin "$branch"
        
        if [ $? -ne 0 ]; then
            echo "Error: Failed to update code. Please check the repository."
            exit 1
        fi
    else
        echo "Error: Directory $TARGET_DIR does not exist. Please check the path."
        exit 1
    fi
}

# 打包代码
build_project() {
    echo "Building project..."
    mvn clean package -DskipTests
    if [ $? -ne 0 ]; then
        echo "Error: Maven build failed."
        exit 1
    fi
}

# 启动服务
start_service() {
    JAR_PATH="$TARGET_DIR/ruoyi-admin/target/$JAR_NAME"
    if [ ! -f "$JAR_PATH" ]; then
        echo "Error: $JAR_NAME not found in target directory."
        exit 1
    fi

    # 杀掉旧进程
    PID=$(ps -ef | grep "$JAR_NAME" | grep -v "grep" | awk '{print $2}')
    if [ -n "$PID" ]; then
        echo "Stopping existing service (PID: $PID)..."
        kill -9 "$PID"
    fi

    # 后台运行服务
    echo "Starting new service..."
    nohup java $JAVA_OPTS -jar "$JAR_PATH" > "$LOG_FILE" 2>&1 &
    if [ $? -eq 0 ]; then
        echo "Service started successfully. Logs: $LOG_FILE"
    else
        echo "Error: Failed to start the service."
        exit 1
    fi
}

# 主逻辑
main() {
    check_dependencies

    # 获取分支名,如果未指定,使用默认分支
    local branch=${1:-$DEFAULT_BRANCH}
    update_code "$branch"
    build_project
    start_service
}

# 执行脚本,传递分支名作为参数
main "$1"

六、直接在root用户下,输入以下命令,即可实现一键拉取git最新代码并maven打包后,自动重启服务。

./java-run.sh

image.png

七、实时查看项目运行日志命令:

 tail -f /var/log/java-service.log


本文原创,转载必追究版权。

分享给朋友:

相关文章

showModalDialog取得父窗口的方法

 通常使用window.open的方式开启新窗口的话要取得父窗口的控件,可以用window.opener来取得父窗口然而如果使用showModalDialog的话...却无效如果有需要的话,...

ejb项目发布注意事项

 部署ejb的服务建好后,找到ejb部署的服务的启动文件:如D:\Oracle\Middleware\user_projects\domains\wssscx\bin\startWebLog...

js限制input只能输入数字、英文、汉字

 1.只能输入数字和英文的:  <input onkeyup="value=value.replace(/[\W]/g,'') "...

如何彻底卸载删除oracle数据库

 windows下如何彻底删除Oracle 软件环境: 1、Windows 2000+ORACLE 8.1.7 ,oracle 10g2、ORACLE安装路径为:C:\ORACLE实现方...

freeMarker 截取字符串(操作字符串函数 )

<#if c.proSummary!?length gt 25>  <!-- 如果长度 >25 截取25个字-->    ...

freemarker 判断日期变量为空处理 及InvalidReferenceException异常处理

at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98);InvalidR...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。