02_开发环境配置

上一章我们重点讲了 Java 运行环境的配置,这一章我们讲解项目层面环境的配置。

企业级环境到底要配什么

一个企业级 Java 项目跑起来,依赖这条链:

Plain 复制代码
JDK  (写/跑 Java)
 └─ Maven (管依赖 + 打包)
     └─ 本地/服务器 中间件
         ├─ MySQL  (业务数据)
         ├─ Redis  (缓存/会话)
         └─ (可选) Nginx / Docker

类比一下:

  • Maven ≈ npm(管包)+ vite(管打包),二合一
  • MySQL / Redis ≈ 我们项目连的数据库/缓存服务
  • Docker ≈ 把上面这些"服务"打包成标准化容器,别再"我本地能跑",可以避免繁琐的本地安装

Docker 环境

安装 Docker Desktop

Windows 提示 ​wsl --update​​​ 的解决办法​:

  1. 管理员身份打开 cmd
  2. 执行 wsl --update --web-download
  3. Docker Desktop 里点 "try again",弹出"欢迎使用 WSL"反复弹窗直接忽略

国内镜像加速(拉镜像不超时)

Docker 下载时不需要魔法。但是在一些镜像的拉取默认时国外环境,此时需要配置镜像。

Docker 我之前写过一个非常详细的文档,可以直接参考:https://blog.csdn.net/xiugonghao/article/details/147167622 ​​ 。

Docker Compose 一站式编排

企业不会一条条 docker run,而是用 docker-compose.yml 一把起所有中间件:

YAML 复制代码
# docker-compose.yml
version: '3.8'
services:
  mysql:
    image: mysql:8.4.10
    container_name: mysql84
    ports: ["3306:3306"]
    environment:
      MYSQL_ROOT_PASSWORD: 你的密码
    volumes:
      - ./mysql/data:/var/lib/mysql
    restart: always

  redis:
    image: redis
    container_name: redis-latest
    command: redis-server --requirepass "foobared"
    ports: ["6379:6379"]
    restart: always
Bash 复制代码
docker compose up -d     # 一条命令起 MySQL + Redis
docker compose down      # 停止

Maven 环境

Maven 是什么

Maven 是 Java 的包管理器,​等同于前端的 npm ​,但它比 npm 更强------​打包也归它管 ​。前端用 package.json,Maven 用 pom.xml。

pom.xml 常用标签

标签 作用
dependencyManagement 父模块里​统一定义包版本​,子模块引包不用写版本号
dependency 用 groupId+artifactId+version 指定包;可放 dependencies(引入依赖)或 dependencyManagement(仅管版本)
properties 定义变量,统一调整版本号等
modules 父模块声明有哪些子模块
packaging 打包方式:pom(父工程) /jar(代码包)
build/build/plugins/plugin 打包构建配置 / 插件
repositories 依赖从哪拉(不配=官方仓库,国内慢)
pluginRepositories 插件的仓库

模块的继承

Maven 的"模块"≠ 业务模块(用户/角色)。它是​工程拆分机制 ​:父 pom 统管版本,子模块继承。若依就是典型多模块:

Plain 复制代码
RuoYi-Vue (父 pom, packaging=pom)
├── ruoyi-admin      (启动模块, jar)  ← 我们跑的就是它
├── ruoyi-framework  (安全/拦截器/web配置)
├── ruoyi-system     (业务: 实体/mapper/service)
├── ruoyi-common     (工具类/常量)
├── ruoyi-generator  (代码生成器)
└── ruoyi-quartz     (定时任务)

父 pom.xml 用 <modules> 列出它们,<dependencyManagement> 锁死所有版本,子模块只写 <artifactId> 不写版本。

下载并配置 Maven

注:现在 IDEA 默认会内置 Maven,无需我们手动下载配置。这里提供一个下载方法仅供喜欢折腾的同学。

  1. 下载:https://maven.apache.org/download.cgi → 下 zip,解压到固定目录(如 D:/dev/maven)。
  2. **配置镜像(这里给完整 settings.xml​​)**:
XML 复制代码
<!-- conf/settings.xml -->
<settings>
  <mirrors>
    <mirror>
      <id>aliyun</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

不配镜像,依赖从国外官方仓库拉,动辄超时。

  1. IDEA 配置自己的 Maven :设置 → 搜 Maven →
    1. Maven home path = D:/dev/maven
    2. User settings file = D:/dev/maven/conf/settings.xml
    3. Local repository = D:/dev/maven/repo
  2. 环境变量 :
    1. 新建系统变量 MAVEN_HOME = D:\dev\maven
    2. Path 追加 %MAVEN_HOME%\bin
    3. 验证:mvn -v 显示版本即成功

Mac export MAVEN_HOME=...; export PATH=$MAVEN_HOME/bin:$PATH 写进 .zshrc。

常用 Maven 命令

Bash 复制代码
mvn clean          # 清 target
mvn compile        # 编译
mvn package -DskipTests   # 打包(跳过测试),产物在 target/*.jar
mvn install        # 装到本地仓库,供其他模块依赖
mvn dependency:tree  # 看依赖树,排查冲突

企业多环境配置

公司项目有开发/测试/生产三套环境,配置(库地址、密码)不能写死。Spring Boot + Maven 用 profile 解决。

Spring Boot 多环境

application.yml 里指定激活哪个:

YAML 复制代码
spring:
  profiles:
    active: dev    # dev / test / prod

再建:

  • application-dev.yml(本地:localhost:3306)
  • application-test.yml(测试库)
  • application-prod.yml(生产库,密码走环境变量)

我们改 active 就能切环境。

Maven 多环境(打包时定环境)

父 pom.xml:

XML 复制代码
<profiles>
  <profile>
    <id>dev</id>
    <properties><profileActive>dev</profileActive></properties>
    <activation><activeByDefault>true</activeByDefault></activation>
  </profile>
  <profile>
    <id>prod</id>
    <properties><profileActive>prod</profileActive></properties>
  </profile>
</profiles>

打包指定环境:mvn package -P prod,Maven 把 @profileActive@ 替换成 prod,打到 jar 里。

​配置优先级 ​(高 → 低):命令行参数 > 环境变量 > application-prod.yml > application.yml。生产密码用环境变量注入,别写进仓库。

相关推荐
学长毕设3 小时前
基于springboot的实验室设备管理系统
java·spring boot·后端
学长毕设3 小时前
基于springboot的社区养老监护系统的设计与实现
java·spring boot·后端
会编程的吕洞宾3 小时前
RAG检索质量怎么评估?3个指标+LLM裁判实战
java·开发语言·人工智能·后端
卢总霸气3 小时前
上海交大机动学院学位论文参考文献Zotero CSL 样式-2026
java
段一凡-华北理工大学3 小时前
高炉能源系统智能化:热风炉、煤气与极致能效~系列文章07:高炉煤气:产生规律与全厂用户平衡
java·前端·能源
咖啡八杯3 小时前
Redis 工具封装:RedisCache 对 Operations 体系的二次封装
java·数据库·redis·缓存·框架·springboot·若依
wno7044 小时前
Springboot国际化信息(i18n)解析
java·spring boot·后端
eleven_4u4 小时前
QPS如何计算,如何部署架构
java·linux·运维·jvm·中间件
牧瀬クリスだ4 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法