首先,我们需要有不同的配置文件

maven读取本地项目文件 maven读取配置文件_python

其次,我们需要在pom.xml中进行配置

<!-- 构件羡慕所需要的信息 -->
	<build>
		<!-- 使用的插件列表 -->
		<plugins>
			<!-- plugin元素包含描述插件所需要的信息 -->
			<plugin>
				<!-- 数据库映射类生成的插件 -->
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>${mybatis-generator.version}</version>
				<configuration>
					<!-- 详细信息和覆盖 -->
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
				<!-- 该插件的依赖 -->
				<dependencies>
					<dependency>
						<groupId>org.mybatis.generator</groupId>
						<artifactId>mybatis-generator-core</artifactId>
						<version>${mybatis-generator.version}</version>
					</dependency>
					<dependency>
						<groupId>mysql</groupId>
						<artifactId>mysql-connector-java</artifactId>
						<version>${mysql.version}</version>
					</dependency>
					<dependency>
						<groupId>org.mybatis</groupId>
						<artifactId>mybatis</artifactId>
						<version>${mybatis.version}</version>
					</dependency>					
					
				</dependencies>



		
			</plugin>
			<!-- 这是maven插件的插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.6</version>
				<!-- 在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->
				<executions>
					<!-- execution元素包含了插件执行需要的信息 -->
					<execution>
						<!-- 执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->
						<id>copy-resources</id>
						<!-- 绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->
						<!-- 在default生命周期的 validate阶段就执行resources插件的copy-resources目标 -->
						<phase>validate</phase>
						<!-- 配置的执行目标 -->
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<!-- 作为DOM对象的配置 -->
						<configuration>
							<!-- 指定resources插件处理资源文件到哪个目录下 -->
							<outputDirectory>${project.build.outputDirectory}</outputDirectory>
							<!-- 也可以用下面这样的方式(指定相对url的方式指定outputDirectory) <outputDirectory>target/classes</outputDirectory> -->
							<!-- 待处理的资源定义 -->
							<overwrite>true</overwrite>
							<!-- 二进制文件的复制 -->
							<nonFilteredFileExtensions>
								<!-- <nonFilteredFileExtension>p12</nonFilteredFileExtension> -->
							</nonFilteredFileExtensions>
							<resources>
								<resource>
									<!-- 指定resources插件处理哪个目录下的资源文件 -->
									<directory>src/main/conf/${env}</directory>
									<targetPath></targetPath>
									<!-- 指定不需要处理的资源 -->
									<!-- <excludes> <exclude>WEB-INF/*.*</exclude> </excludes> -->
									<filtering>true</filtering>
								</resource>
							</resources>
						</configuration>
						<inherited></inherited>
					</execution>
				</executions>
			</plugin>

		</plugins>
		
		<!-- 定位打包配置文件 -->
		 <resources>
		 	<resource>
             	<directory>src/main/resources</directory>
             	<includes>
                 	<include>**/*.properties</include>
         			<include>**/*.xml</include>
             	</includes>
         	</resource>
         	<!-- 用于正确打包repository里的xml文件 -->
         	<resource>
             	<directory>src/main/java</directory>
             	<includes>
                 	<include>**/*.properties</include>
         			<include>**/*.xml</include>
             	</includes>
         	</resource>
    	</resources>
		
		<finalName>ROOT</finalName>
	</build>
        <!-- 这里就是开始进行分类配置,不同的环境,我们给他不同的id,这个id与截图中的文件夹名称相同,因为打包的时的打包语句中会有该id,id和哪个对应,就使用哪个配置环境 -->
	<profiles>
		<!-- 开发环境,默认激活 -->
		<profile>
			<id>dev</id>
			<properties>
				<env>dev</env>
			</properties>
			<activation>
				<!--默认启用的是dev环境配置 -->
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<!-- 测试环境 -->
		<profile>
			<id>test</id>
			<properties>
				<env>test</env>
			</properties>
		</profile>
		<!-- 生产环境 -->
		<profile>
			<id>prod</id>
			<properties>
				<env>prod</env>
			</properties>
		</profile>
		<!-- 预发布环境 -->
		<profile>
			<id>uat</id>
			<properties>
				<env>uat</env>
			</properties>
		</profile>
		
	</profiles>

配置好了之后,在打包的时候写入对应的关键字,也就是配置文件中的profile的id,就可以读取对应的配置文件了。