springboot项目利用maven进行多环境打包

项目开发环境

springboot2.0

jdk1.8

如何利用maven对springboot项目进行多环境打包呢?

springboot运行的时候默认是加载application.properties的,如果还是按照传统springmvc的maven多环境打包方式直接将配置命名为application-dev.properties,application-sit.properties等等是无法运行成功的。

那么该怎么办呢?首先找到突破口——application.properties,在项目中还是保留application.properties,根据springboot的多环境启动配置,可以在application.properties中配置启动哪个环境的配置,具体项目结构如下

红圈圈中的即为需要定义的properties

首先看下application.properties这个配置文件的内容,本地启动时通过spring.profiles.active=dev直接来指定需要的环境的配置文件,但在通过maven打包的时候启用这个配置spring.profiles.active=@profiles.active@。spring.profiles.active就是springboot提供的在多环境配置的时候用来指定要加载对应的配置文件的。

application.properties文件如下:

#指定运行环境dev(开发环境使用), sit(测试环境使用), prod(生产环境使用). 
#maven打包的时候改为spring.profiles.active=@profiles.active@,@profiles.active@来自maven打包时指定的打包环境, 对应pom文件中的标签profiles.active
#spring.profiles.active=dev
spring.profiles.active=@profiles.active@

另外说明下,在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

 

pom文件配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.xxx</groupId>
	<artifactId>xxx-xxx-xxxx</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>xxx-xxxx-xxx</name>
	<description>xxx任务</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- oracle 驱动-->
		<dependency>
		    <groupId>com.oracle</groupId>
		    <artifactId>ojdbc6</artifactId>
		    <version>11.2.0.3</version>
		</dependency>
		<!-- 阿里巴巴Druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.9</version>
		</dependency>	
		<!-- json -->	
		<dependency>
		    <groupId>com.alibaba</groupId>
		    <artifactId>fastjson</artifactId>
		    <version>1.2.49</version>
		</dependency>
		
		<dependency>
		  <groupId>org.apache.commons</groupId>
		  <artifactId>commons-lang3</artifactId>
		  </dependency>
		<!-- hessian -->
		<dependency>
		    <groupId>com.caucho</groupId>
		    <artifactId>hessian</artifactId>
		    <version>4.0.38</version>
		</dependency>

		<dependency>
		    <groupId>commons-io</groupId>
		    <artifactId>commons-io</artifactId>
		    <version>2.6</version>
		</dependency>
		<!-- 钉钉  -->
		<dependency>
		    <groupId>com.dingtalk.chatbot</groupId>
		    <artifactId>dingtalk-chatbot-sdk</artifactId>
		    <version>0.9.0-SNAPSHOT</version>
		</dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
         </dependency>
		<!-- logback日志输出到redis使用 -->
		<dependency>
			<groupId>com.cwbase</groupId>
			<artifactId>logback-redis-appender</artifactId>
			<version>1.1.5</version>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-pool2</artifactId>
		    </dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
	</dependencies>

	<!-- 多环境打包配置, 使用如下命令打包    
		mvn clean package -Pprod
		#或者
		mvn clean package -Dprofiles.active=prod
	 -->
	<profiles>
	    <profile>
			<!--本地开发环境-->
			<id>dev</id>
			<properties>
				<profiles.active>dev</profiles.active>
			</properties>
	<!--自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它  
   能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。--> 		
			<activation>	
    		<!--profile默认是否激活的标志 ,  maven打包不指定profile参数时执行这个profile, true 执行这个profile--> 	
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<!--SIT 测试环境-->
			<id>sit</id>
			<properties>
				<profiles.active>sit</profiles.active>
			</properties>
		</profile>
		<profile>
			<!--生产环境-->
			<id>prod</id>
			<properties>
				<profiles.active>prod</profiles.active>
			</properties>
		</profile>
	</profiles>

	<build>
		<!-- 指定打包后生成的文件名 -->
		<finalName>指定打包后生成的包名</finalName>
		
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
		</plugins>
		<!-- 指定不同环境资源 -->
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<!-- 先排除不需要的配置 -->
				<excludes>
					<exclude>config/dev/*</exclude>
					<exclude>config/sit/*</exclude>
					<exclude>config/prod/*</exclude>
					<exclude>**/*.properties</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources/config/${profiles.active}</directory>
			</resource>
			
		     <resource>
		         <directory>src/main/resources</directory>
		         <!-- 引入需要的已被排除的配置 -->
		         <includes>
		             <include>application-${profiles.active}.properties</include>
		             <include>application.properties</include><!-- 要用pom中的值替换到properties的变量@profiles.active@,需要指定包含的文件 -->
		         </includes>
		         <filtering>true</filtering>
		     </resource>		
		     
		     <resource>
				<directory>src/main/java</directory>
				<!-- 先排除不需要的配置 -->
				<excludes>
					<exclude>jsp/report/schedule/template/*</exclude>
				</excludes>
			</resource>
		     <resource>
		         <directory>src/main/java</directory>
		         <!-- 引入需要的已被排除的配置 -->
		         <includes>
		             <include>jsp/report/schedule/template/template-${profiles.active}</include>
		         </includes>
		         <filtering>true</filtering>
		     </resource>
		     	
		</resources>		
		
	</build>


</project>

如果通过eclipse进行打包的话,只需要改两个地方,看下面的截图:


上图中的profiles的值sit对应pom文件中多文件配置profile下的子标签id,看下图

 

总结

至此这个maven的打包配置完成,其实springboot多环境打包的难点就是如何保留application.properties


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Maven项目和Spring Boot项目是两个不同的概念,但它们之间存在一些联系。 首先,Maven是一个构建工具,它可以管理和构建项目的依赖关系。它使用pom.xml文件来定义项目的结构和所需的依赖项。通过Maven,我们可以很方便地管理项目的构建、测试和部署过程。 而Spring Boot是一个用于快速构建基于Spring框架的应用程序的框架。它采用了约定优于配置的方式,简化了Spring应用的开发和部署。使用Spring Boot,我们可以更快地搭建一个Web应用,无需进行复杂的配置,即可快速启动一个独立可运行的应用。 所以,Maven项目和Spring Boot项目可以有不同的关系。一个项目可以同时使用Maven和Spring Boot,以利用Maven的依赖管理和构建功能,同时使用Spring Boot的简化配置和快速开发特性。 总结来说,Maven是一个用于管理和构建项目的工具,而Spring Boot是一个用于快速构建基于Spring框架的应用程序的框架。它们可以一起使用,以提高项目的开发效率和可维护性。 ### 回答2: Maven项目和Spring Boot项目是两种不同的项目类型,各自有着不同的特点和用途。 Maven是一种项目管理工具,主要用于管理和构建Java项目。它可以统一管理项目的依赖关系,并提供了一套标准的构建生命周期和插件机制。通过配置Maven的pom.xml文件,可以定义项目的依赖项、构建过程、打包方式等等。Maven的主要功能是建立项目的基础结构,并提供统一的构建管理。 Spring Boot是一种基于Spring框架的快速开发框架。它简化了Spring应用的初始化和配置过程,使程序员能够更加专注于业务逻辑的开发。Spring Boot内置了大量的默认配置,可以自动配置Spring应用所需的各种组件和功能。相对于传统的Spring项目,Spring Boot提供了一种更加简洁高效的开发方式,同时也能够减少代码配置量。 从功能角度来看,Maven主要用于项目的依赖管理和构建管理,它更侧重于项目的整体管理和构建过程;而Spring Boot则是一种开发框架,旨在提升开发效率和简化配置过程。它们在功能上有一定的重叠,但是着重点和使用方式是不同的。 总的来说,Maven是一种项目管理工具,用于构建和管理Java项目的依赖关系;Spring Boot是一种用于快速开发Spring应用的框架。可以说,Maven项目是一个基础框架,而Spring Boot项目则是在这个基础上进行开发的应用程序。 ### 回答3: Maven项目和Spring Boot项目是两种不同的项目类型,二者在目标和功能上有以下几点区别: 1. 目标:Maven项目的主要目标是管理和构建项目,它主要关注项目的结构、依赖关系和构建过程。而Spring Boot项目则是基于Spring框架的快速开发框架,旨在简化Spring应用程序的开发和部署。 2. 构建方式:Maven项目使用Maven构建工具进行构建和管理,通过pom.xml文件指定项目的依赖和配置。而Spring Boot项目则内嵌了一个嵌入式的Tomcat服务器,可以直接运行一个可执行的JAR包,无需额外的部署配置。 3. 配置方式:Maven项目的配置主要集中在pom.xml文件中,包括项目的依赖、插件和构建配置。而Spring Boot项目则采用约定大于配置的方式,通过一些默认配置和自动化配置,可以大大简化项目的配置工作。 4. 依赖管理:Maven项目使用Maven的依赖管理机制,可以很方便地管理和引用外部依赖。而Spring Boot项目则内置了许多常用的依赖库和框架,可以简化依赖的引入和版本管理。 5. 开发方式:Maven项目的开发方式相对更为自由,可以选择使用任意的开发框架和工具。而Spring Boot项目则为开发者提供了一种更加规范和标准化的方式,建议使用Spring框架相关的技术进行开发。 综上所述,Maven项目主要关注项目的构建和管理,而Spring Boot项目则是一种快速开发框架,旨在简化Spring应用程序的开发和部署。二者有不同的目标、构建方式、配置方式和依赖管理方式。根据具体的需求和场景,开发者可以选择使用适合的项目类型来进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值