当前位置:   article > 正文

springboot项目利用maven进行多环境打包_maven打包时用application-druid

maven打包时用application-druid

项目开发环境

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文件如下:

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

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

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

 

pom文件配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.xxx</groupId>
  6. <artifactId>xxx-xxx-xxxx</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>xxx-xxxx-xxx</name>
  10. <description>xxx任务</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>2.0.5.RELEASE</version>
  15. <relativePath/> <!-- lookup parent from repository -->
  16. </parent>
  17. <properties>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-web</artifactId>
  26. </dependency>
  27. <!-- mybatis -->
  28. <dependency>
  29. <groupId>org.mybatis.spring.boot</groupId>
  30. <artifactId>mybatis-spring-boot-starter</artifactId>
  31. <version>1.3.2</version>
  32. </dependency>
  33. <!-- oracle 驱动-->
  34. <dependency>
  35. <groupId>com.oracle</groupId>
  36. <artifactId>ojdbc6</artifactId>
  37. <version>11.2.0.3</version>
  38. </dependency>
  39. <!-- 阿里巴巴Druid -->
  40. <dependency>
  41. <groupId>com.alibaba</groupId>
  42. <artifactId>druid</artifactId>
  43. <version>1.1.9</version>
  44. </dependency>
  45. <!-- json -->
  46. <dependency>
  47. <groupId>com.alibaba</groupId>
  48. <artifactId>fastjson</artifactId>
  49. <version>1.2.49</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.apache.commons</groupId>
  53. <artifactId>commons-lang3</artifactId>
  54. </dependency>
  55. <!-- hessian -->
  56. <dependency>
  57. <groupId>com.caucho</groupId>
  58. <artifactId>hessian</artifactId>
  59. <version>4.0.38</version>
  60. </dependency>
  61. <dependency>
  62. <groupId>commons-io</groupId>
  63. <artifactId>commons-io</artifactId>
  64. <version>2.6</version>
  65. </dependency>
  66. <!-- 钉钉 -->
  67. <dependency>
  68. <groupId>com.dingtalk.chatbot</groupId>
  69. <artifactId>dingtalk-chatbot-sdk</artifactId>
  70. <version>0.9.0-SNAPSHOT</version>
  71. </dependency>
  72. <dependency>
  73. <groupId>org.apache.httpcomponents</groupId>
  74. <artifactId>httpclient</artifactId>
  75. </dependency>
  76. <!-- logback日志输出到redis使用 -->
  77. <dependency>
  78. <groupId>com.cwbase</groupId>
  79. <artifactId>logback-redis-appender</artifactId>
  80. <version>1.1.5</version>
  81. </dependency>
  82. <dependency>
  83. <groupId>org.apache.commons</groupId>
  84. <artifactId>commons-pool2</artifactId>
  85. </dependency>
  86. <dependency>
  87. <groupId>org.springframework.boot</groupId>
  88. <artifactId>spring-boot-starter-test</artifactId>
  89. <scope>test</scope>
  90. </dependency>
  91. <dependency>
  92. <groupId>org.springframework.boot</groupId>
  93. <artifactId>spring-boot-configuration-processor</artifactId>
  94. <optional>true</optional>
  95. </dependency>
  96. </dependencies>
  97. <!-- 多环境打包配置, 使用如下命令打包
  98. mvn clean package -Pprod
  99. #或者
  100. mvn clean package -Dprofiles.active=prod
  101. -->
  102. <profiles>
  103. <profile>
  104. <!--本地开发环境-->
  105. <id>dev</id>
  106. <properties>
  107. <profiles.active>dev</profiles.active>
  108. </properties>
  109. <!--自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它
  110. 能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式。-->
  111. <activation>
  112. <!--profile默认是否激活的标志 , maven打包不指定profile参数时执行这个profile, true 执行这个profile-->
  113. <activeByDefault>true</activeByDefault>
  114. </activation>
  115. </profile>
  116. <profile>
  117. <!--SIT 测试环境-->
  118. <id>sit</id>
  119. <properties>
  120. <profiles.active>sit</profiles.active>
  121. </properties>
  122. </profile>
  123. <profile>
  124. <!--生产环境-->
  125. <id>prod</id>
  126. <properties>
  127. <profiles.active>prod</profiles.active>
  128. </properties>
  129. </profile>
  130. </profiles>
  131. <build>
  132. <!-- 指定打包后生成的文件名 -->
  133. <finalName>指定打包后生成的包名</finalName>
  134. <plugins>
  135. <plugin>
  136. <groupId>org.springframework.boot</groupId>
  137. <artifactId>spring-boot-maven-plugin</artifactId>
  138. <configuration>
  139. <source>${java.version}</source>
  140. <target>${java.version}</target>
  141. </configuration>
  142. </plugin>
  143. </plugins>
  144. <!-- 指定不同环境资源 -->
  145. <resources>
  146. <resource>
  147. <directory>src/main/resources</directory>
  148. <!-- 先排除不需要的配置 -->
  149. <excludes>
  150. <exclude>config/dev/*</exclude>
  151. <exclude>config/sit/*</exclude>
  152. <exclude>config/prod/*</exclude>
  153. <exclude>**/*.properties</exclude>
  154. </excludes>
  155. </resource>
  156. <resource>
  157. <directory>src/main/resources/config/${profiles.active}</directory>
  158. </resource>
  159. <resource>
  160. <directory>src/main/resources</directory>
  161. <!-- 引入需要的已被排除的配置 -->
  162. <includes>
  163. <include>application-${profiles.active}.properties</include>
  164. <include>application.properties</include><!-- 要用pom中的值替换到properties的变量@profiles.active@,需要指定包含的文件 -->
  165. </includes>
  166. <filtering>true</filtering>
  167. </resource>
  168. <resource>
  169. <directory>src/main/java</directory>
  170. <!-- 先排除不需要的配置 -->
  171. <excludes>
  172. <exclude>jsp/report/schedule/template/*</exclude>
  173. </excludes>
  174. </resource>
  175. <resource>
  176. <directory>src/main/java</directory>
  177. <!-- 引入需要的已被排除的配置 -->
  178. <includes>
  179. <include>jsp/report/schedule/template/template-${profiles.active}</include>
  180. </includes>
  181. <filtering>true</filtering>
  182. </resource>
  183. </resources>
  184. </build>
  185. </project>

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


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

 

总结

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/364590
推荐阅读
相关标签
  

闽ICP备14008679号