161 lines
3.9 KiB
Bash
161 lines
3.9 KiB
Bash
#!/bin/bash
|
||
|
||
# ==============================================
|
||
# Maven 安装脚本(使用国内镜像)
|
||
# 功能:自动安装 Maven 并配置阿里云镜像源
|
||
# ==============================================
|
||
|
||
# 启用严格模式
|
||
set -euo pipefail
|
||
|
||
# --------------------------
|
||
# 颜色定义
|
||
# --------------------------
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[0;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# --------------------------
|
||
# 日志函数
|
||
# --------------------------
|
||
log_info() {
|
||
echo -e "${GREEN}[INFO]${NC} $1"
|
||
}
|
||
|
||
log_warn() {
|
||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||
}
|
||
|
||
# --------------------------
|
||
# 检查 root 权限
|
||
# --------------------------
|
||
check_root() {
|
||
if [ "$(id -u)" -ne 0 ]; then
|
||
log_error "请使用 root 用户或通过 sudo 运行此脚本"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
# --------------------------
|
||
# 安装 Java(Maven 依赖 Java)
|
||
# --------------------------
|
||
install_java() {
|
||
log_info "正在检查 Java 是否已安装..."
|
||
|
||
if ! command -v java &> /dev/null; then
|
||
log_warn "未检测到 Java,正在安装 OpenJDK 17..."
|
||
dnf install -y java-17-openjdk-devel
|
||
else
|
||
log_info "Java 已安装,版本信息如下:"
|
||
java -version
|
||
fi
|
||
}
|
||
|
||
# --------------------------
|
||
# 下载并安装 Maven(使用国内镜像)
|
||
# --------------------------
|
||
install_maven() {
|
||
log_info "正在下载并安装 Maven(使用国内镜像)..."
|
||
|
||
# 定义 Maven 版本和安装路径
|
||
MAVEN_VERSION="3.8.8"
|
||
INSTALL_DIR="/opt/maven"
|
||
|
||
# 使用阿里云镜像地址
|
||
MAVEN_URL="https://mirrors.aliyun.com/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
|
||
|
||
# 创建安装目录
|
||
mkdir -p "$INSTALL_DIR"
|
||
|
||
# 下载 Maven
|
||
log_info "正在从阿里云镜像下载 Maven ${MAVEN_VERSION}..."
|
||
curl -L -o "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz" "$MAVEN_URL"
|
||
|
||
# 解压到安装目录
|
||
tar -xzf "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -C "$INSTALL_DIR" --strip-components=1
|
||
|
||
# 清理临时文件
|
||
rm -f "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
|
||
|
||
log_info "Maven 已成功安装到 ${INSTALL_DIR}"
|
||
}
|
||
|
||
# --------------------------
|
||
# 配置环境变量
|
||
# --------------------------
|
||
configure_env() {
|
||
log_info "正在配置 Maven 环境变量..."
|
||
|
||
# 添加 Maven 到 PATH
|
||
echo 'export M2_HOME=/opt/maven' > /etc/profile.d/maven.sh
|
||
echo 'export PATH=$M2_HOME/bin:$PATH' >> /etc/profile.d/maven.sh
|
||
|
||
# 使配置立即生效
|
||
source /etc/profile.d/maven.sh
|
||
|
||
log_info "Maven 环境变量已配置完成"
|
||
}
|
||
|
||
# --------------------------
|
||
# 配置阿里云镜像源
|
||
# --------------------------
|
||
configure_aliyun_mirror() {
|
||
log_info "正在配置阿里云 Maven 镜像源..."
|
||
|
||
# 创建 Maven 配置目录
|
||
mkdir -p /root/.m2
|
||
|
||
# 配置 settings.xml 文件
|
||
cat > /root/.m2/settings.xml <<'EOF'
|
||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||
<mirrors>
|
||
<mirror>
|
||
<id>aliyun</id>
|
||
<name>Aliyun Maven</name>
|
||
<url>https://maven.aliyun.com/repository/public</url>
|
||
<mirrorOf>*</mirrorOf>
|
||
</mirror>
|
||
</mirrors>
|
||
</settings>
|
||
EOF
|
||
|
||
log_info "阿里云 Maven 镜像源已配置完成"
|
||
}
|
||
|
||
# --------------------------
|
||
# 测试 Maven 安装
|
||
# --------------------------
|
||
test_maven() {
|
||
log_info "正在测试 Maven 安装..."
|
||
|
||
mvn -v
|
||
|
||
log_info "Maven 安装测试完成"
|
||
}
|
||
|
||
# --------------------------
|
||
# 主函数
|
||
# --------------------------
|
||
main() {
|
||
check_root
|
||
install_java
|
||
install_maven
|
||
configure_env
|
||
configure_aliyun_mirror
|
||
test_maven
|
||
|
||
log_info "Maven 已成功安装并配置!"
|
||
}
|
||
|
||
# --------------------------
|
||
# 执行主函数
|
||
# --------------------------
|
||
main
|
||
exit 0 |