
前言:在软件开发流程中,一个项目通常会经历三个阶段(也可以叫做环境),开发环境,测试环境,生产环境。在这三个环境中,应用程序的配置参数往往是不同的。最典型的例子就是数据库连接。而传统的解决办法是手动修改,反复注释代码,这样不仅繁琐而且危险。为了解决这个问题,Maven 引入了 Profile 机制。
它允许我们在 pom.xml 中定义多套环境配置,并在构建项目时(打包时)动态地指定使用哪一套。在 pom.xml 中定义多个 profile,每个 profile 里指定对应环境的配置参数。然后在项目资源文件(如 application.properties 或 jdbc.properties)中使用变量占位符(如 ${db.url})。最后,在执行 mvn package 命令时,通过 -P 参数激活对应的 profile,Maven 就会在打包时自动将变量替换为当前环境的具体值。
maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境。这个过程涵盖了从项目配置、编码、打包到部署的整个生命周期,核心目标就是让一套代码能通过自动化的方式,适配不同运行环境
这个阶段主要在项目搭建时完成,目的是定义好有哪些环境以及如何管理它们。
1. 定义配置变量
在项目的配置文件(如src/main/resources/application.properties)中,不使用具体的值,而是使用占位符变量。
# 原内容:spring.datasource.url=jdbc:mysql://localhost:3306/test
# 修改为:
spring.datasource.url=${db.url}
spring.datasource.username=${db.username}
spring.datasource.password=${db.password}2. 规划资源配置
在 pom.xml 中做两件事:
.properties)中的变量(${xxx}),并替换成真实值。
定义Profile:在<profiles>标签内定义不同的环境。每个环境有自己的id和对应的属性值。
<profiles>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<db.url>jdbc:mysql://localhost:3306/dev_db</db.url>
<db.username>dev_user</db.username>
<db.password>123456</db.password>
</properties>
<!-- 可选:默认激活dev环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 生产环境 -->
<profile>
<id>prod</id>
<properties>
<db.url>jdbc:mysql://192.168.1.100:3306/prod_db</db.url>
<db.username>prod_admin</db.username>
<db.password>Prod@2024!</db.password>
</properties>
</profile>
</profiles>这个阶段发生在需要生成部署包的时候(例如在开发人员本地打包,或者在自动化构建服务器如Jenkins上)。
3. 执行打包命令 通过Maven命令,指定本次打包要使用哪个环境的配置。
5. 分发与部署
dev包,会被部署到开发人员的本地服务器或开发环境服务器。
prod包,会被部署到生产环境的服务器。
过程概览:
在Maven的多环境开发或日常构建中,"跳过测试" 是一个非常常见的需求。它的核心目的是为了加快构建速度,特别是在测试环节比较耗时,或者你确信代码逻辑没问题,只想快速打包部署的时候。
在Maven中,跳过测试主要有三种方式,它们的力度和使用场景各不相同。
在执行mvn package或mvn install命令时,附加一个参数。
-DskipTests:不执行测试,但编译测试类
含义:跳过测试用例的执行,但仍然会编译测试目录下的代码。 |
|---|
结果:target/test-classes/目录下仍然有编译好的测试类字节码文件,只是没运行。 |
使用场景:大部分临时打包场景都用这个,因为它保留了编译过程,一旦你想回头运行测试,不需要重新编译。 |
含义:不仅不执行测试,连测试代码都不编译。 |
|---|
结果:速度比-DskipTests更快。 |
使用场景:极少数情况,比如测试代码依赖某些环境变量但当前环境缺失,导致编译都通不过;或者为了极限追求打包速度。 |
pom.xml中配置(长期生效,永久跳过)如果你希望某个模块或者整个项目永远都不运行测试(例如:一个纯工具类项目,或者一个打包模块),可以在pom.xml的<properties>或<plugin>中配置。
如果你使用的是 IntelliJ IDEA,可以直接在 Maven 工具栏中操作:
package 等命令,就会自动追加 -DskipTests 参数。
私服相当于一个缩小版的中央仓库,便于公司内部进行资源传输。
常见私服的安装:
之后打开控制台,执行cmd窗口,输入nexus.exe 空格/run空格nexus;(在没有中文的目录,最好安装在C盘,否则报错)
结语:
最后的最后,感谢大家观看到最后,如果对你有帮助,请一键三连,点赞,关注(拜托了),收藏,你的支持就是我最大的鼓励,除夕夜,小北在这里祝大家新年快乐,平安顺遂!
