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

萨瓦迪卡3个月前 (01-15)linux系统180

总的步骤分为: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


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

分享给朋友:

相关文章

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

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

org.tigris.subversion.javahl.ClientException:Attempted to lock an already-locked dir

 svn更新或提交时候报错:org.tigris.subversion.javahl.ClientException:Attempted to lock an already-locke...

java.lang.ClassNotFoundException: oracle.jdbc.driver.OralceDriver

 java.lang.ClassNotFoundException: Oracle.jdbc.driver.OracleDriver这个错误;原因可能是 少了驱动 ,少包class...

MyEclipse 报错:'Building workspace' has encountered a problem解决方法

MyEclipse 报错:'Building workspace' has encountered a problem解决方法

          每次MyEclipse运行 工作空间报错如下:'Building workspac...

程序员为什么不炫富

程序员为什么不炫富

 提到互联网,尤其是互联网工程师们,人们往往会想到两个词:“高薪”和“高压”。在知乎上“为什么很少见工资高的程序员炫富?”的问题下,一个得票很高的答案是:“乐意炫富的人,不是因为有钱,而是因为付出的少...

office 2010安装、激活、激活工具下载

office 2010安装、激活、激活工具下载

 首先下载好工具包(包括office 2010安装程序、激活工具及Microsoft .NET Framework 4.0),点击工具包下载进行下载;安装好office 2010。如果是wi...

发表评论

访客

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