Maven是一个流行的项目管理和理解工具,用于构建、管理和了解Java项目。这个详细的指南将帮助你从安装Maven开始,一直到配置Maven环境变量和使用Maven Wrapper。
1. 安装Maven
Windows系统
步骤1:下载Maven
- 访问Apache Maven的官方网站:maven.apache.org/
- 点击“Download Maven”,选择最新的稳定版本。
- 下载
.zip或.tar.gz归档文件。
步骤2:解压Maven
- 打开下载的文件,右键选择“解压到...”,选择一个解压路径,例如:
C:\Program Files\Apache\maven
步骤3:设置环境变量
-
右键点击“此电脑”或“我的电脑”,选择“属性”。
-
点击“高级系统设置”。
-
在系统属性窗口,点击“环境变量”。
-
在“系统变量”区域,点击“新建”。
- 变量名:
MAVEN_HOME - 变量值:
C:\Program Files\Apache\maven(Maven的安装路径)
- 变量名:
-
在“系统变量”中找到“Path”变量,点击“编辑”。
-
点击“新建”,添加
%MAVEN_HOME%\bin。
步骤4:验证安装
- 打开命令提示符。
- 输入命令:
mvn -version - 如果安装成功,你将看到Maven的版本信息。
macOS和Linux系统
步骤1:使用包管理器安装Maven
-
Debian/Ubuntu系统:
bash sudo apt-get update sudo apt-get install maven -
macOS:
bash brew update brew install maven
步骤2:验证安装
- 打开终端。
- 输入命令:
mvn -version - 如果安装成功,你将看到Maven的版本信息。
2. 配置Maven环境变量
Windows系统
确保MAVEN_HOME和Path变量正确设置。
macOS和Linux系统
通常不需要设置环境变量,但可以设置M2_HOME环境变量,方便使用。
bash
export M2_HOME=/usr/localCellar/maven/3.6.3/libexec
export PATH=$M2_HOME/bin:$PATH
3. Maven 工程结构
- 基于第三方工具或框架的约定 Maven 对工程目录结构的要求
4. Maven 构建
构建过程主要包含以下环节:
5. 配置settings.xml
settings.xml文件位于Maven安装目录下的conf目录中。
修改配置
- 打开
settings.xml文件。 - 添加镜像配置以加速依赖下载:
<settings>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
6. 安装和使用Maven Wrapper
Maven Wrapper是一个工具,允许在没有安装Maven的情况下运行Maven构建。
初始化Maven Wrapper
- 在项目根目录下运行:
mvn -N wrapper
- 这将下载Wrapper所需的文件到项目目录下的
.mvn/wrapper。
构建项目
- 使用Wrapper构建项目:
./mvnw clean install
- 在Windows上使用:
mvnw.bat clean install
7. Maven profile 多环境管理
在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。
因此我们可以利用 Maven 的 profile 来进行定义多个 profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
<build>
<!-- profile对资源的操作 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 先排除所有环境相关的配置文件 -->
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 是否替换 @xx@ 表示的maven properties属性值 -->
<!--通过开启 filtering,maven 会将文件中的 @xx@ 替换 profile 中定义的 xx 变量/属性-->
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<include>application-${profileActive}.yml</include>
</includes>
</resource>
</resources>
</build>
<!--多环境文件配置-->
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<activation>
<!--默认激活-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<!--正式环境-->
<profile>
<id>prod</id>
<properties>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>
在 idea 中可以看到,因此,当你需要打包哪一个环境的就勾选即可:
同时,SpringBoot 天然支持多环境配置,一般来说,application.yml存放公共的配置,application-dev.yml、application-test.yml、application.prod.yml分别存放三个环境的配置。如下:
application.yml 中配置spring.profiles.active=prod(或者dev、test)指定使用的配置文件,如下:
注:profileActive,就是上面我们自定义的标签。然后当我们勾选哪一个环境,打包的配置文件就是那一个环境:
同时我们再在 resource 标签下看到 includes 和 excludes 标签。它们的作用是:
- includes:指定执行 resource 阶段时要包含到目标位置的资源
- excludes:指定执行 resource 阶段时要排除的资源