Maven多环境配置

本文介绍如何利用Maven的pom.xml配置实现不同环境(如开发、测试、生产)的打包过程,确保每个环境使用对应的配置文件。通过设置profile标签,可以灵活选择打包时包含的配置,并解决父子Maven工程打包时可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先介绍一下什么是多环境?
一般我们项目开发的流程是:开发->测试->上线,根据不同的环境我们可能会有不同的配置文件(连接地址等),因此需要根据不同的环境打包出拥有不同配置文件的包。而为了打包出不同的包,我们可以在 maven 的 pom.xml 中进行相关的配置。


pom.xml

在pom.xml中添加如下profile的配置:

		<profiles>
			<!-- 本地环境 -->
			<profile>
				<id>local</id>
				<properties>
					<packageMode>local</packageMode>
				</properties>
				<activation>
					<activeByDefault>true</activeByDefault>
				</activation>
			</profile>
			<!-- 测试环境 -->
			<profile>
				<id>test</id>
				<properties>
					<packageMode>test</packageMode>
				</properties>
				<activation>
					<activeByDefault>false</activeByDefault>
				</activation>
			</profile>
			<!-- 生产环境 -->
			<profile>
				<id>product</id>
				<properties>
					<packageMode>product</packageMode>
				</properties>
				<activation>
					<activeByDefault>false</activeByDefault>
				</activation>
			</profile>
		</profiles>

准备不同的配置文件

在 src/main/resources,如下图:
在这里插入图片描述
不同环境的配置文件都在 profile 目录的子目录中,公用的配置文件直接放在 profile 目录下。


配置build标签

在build标签里面添加resources标签:

		<finalName>${artifactId}-${packageMode}</finalName><!-- 按照我们的要求设置打包后的名字 -->
		<resources>
			<!-- 1. 排除profile文件 -->
			<resource>
				<directory>src/main/resources</directory>
				<excludes>
					<exclude>profile/**</exclude>
				</excludes>
			</resource>
			<!-- 2. 添加激活的profile文件 -->
			<resource>
				<directory>src/main/resources/profile/${packageMode}</directory>
			</resource>
			<!-- 3. 添加公共的profile文件 -->
			<resource>
				<directory>src/main/resources/profile</directory>
				<includes>
					<include>*</include>
				</includes>
			</resource>
		</resources>

使用与问题

使用
在打包之前,我们就可以通过修改 profile->activation->activeByDefault 的值,打包出具有不同配置文件的包了。

问题
父子Maven工程打包时,Maven报错:Non-resolvable parent POM for XXX,两种可能:

  1. 子pom文件的parent relativePath 写错,我的并没有错
		<parent>
			<groupId>com.moke</groupId>
			<artifactId>demo-parent</artifactId>
			<version>0.0.1</version>
			<relativePath>../demo-parent/pom.xml</relativePath><!-- 相对路径 -->
		</parent>
  1. 父pom文件设置了 modules 没有先 install 一次会报错,注意父pom文件在install前需要把modules注释掉,在install后再解开,就可以 build 子项目了。
		<modules>
			<module>../../videodemo</module>
		</modules>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值