springboot配置mavn+profile环境切换 tomcat发布使用

本文参考文章来自:Spring-Boot application.yml 文件拆分,实现 maven 多环境动态启用 Profiles

1.环境分为:dev prod test【以yml配置】:

   建4份文件:application.yml   application-dev.yml   application-prod.yml  application-test.yml

   application.yml内容很少只有:

#执行的命令内容: java -jar xxx.jar --spring.profiles.active=test 表示使用测试环境的配置
#yml文件写法:之后一定需要空格
spring:
  profiles:
    active: #spring.profiles.active#

  application-dev.yml   application-prod.yml  application-test.yml这三个文件分别都是各自环境的基本配置(以application-test.yml  为例子):

#执行的命令内容: java -jar xxx.jar --spring.profiles.active=test 表示使用测试环境的配置
#yml文件写法:之后一定需要空格
spring:
  datasource:
      url: jdbc:mysql://localhost/stuproject?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
      username: root
      password:
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      initialSize: 1
      minIdle: 3
      maxActive: 20
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 30000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall,slf4j
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;druid.stat.logSlowSql:true
      # 合并多个DruidDataSource的监控数据
      useGlobalDataSourceStat: true

# mybatis配置
mybatis:
  mapper-locations: classpath*:/mapper/*Mapper.xml


# 日志配置
logging:
  level:
    root: info
    #mapper层 sql日志 DEBUG级别输出
    com.example.ljia.mapper: debug
  config: classpath:logback-boot.xml
  logName: ljia
  path: D:/ljia/logs

# redis配置
redis:
  hostName: 127.0.0.1
  password: 123456
  database: 0
  port: 6379
  timeout: 0
  pool:
    maxTotal: 200
    maxWaitMillis: 10000
    maxIdle: 50
    minIdle: 10
    testOnBorrow: true

#durid配置内容
druid:
  allow:
    ip: 127.0.0.1
  deny:
    ip:
  login:
    user: root
    password: samlai
  reset:
    enable: false


file:
  path: D:/TestFile/file
  base.url: http://localhost:8080/

#ip地址
project:
  ip: http://127.0.0.1:8080
  qr: /qr

2.pom文件的配置有2处:

	<!-- profiles环境 -->
	<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<spring.profiles.active>dev</spring.profiles.active>
			</properties>
		</profile>
		<profile>
			<id>test</id>
			<properties>
				<spring.profiles.active>test</spring.profiles.active>
			</properties>
			<!--默认为环境打包方式  : spring boot一定需要制定相应的环境来打包,不然启动会出错-->
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<spring.profiles.active>prod</spring.profiles.active>
			</properties>
		</profile>
	</profiles>
<!-- springboot profile 打包内容 -->
			<!--参考文章来自: https://yulaiz.com/spring-boot-maven-profiles/ -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.7</version>
				<executions>
					<execution>
						<id>default-resources</id>
						<phase>validate</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>target/classes</outputDirectory>
							<useDefaultDelimiters>false</useDefaultDelimiters>
							<delimiters>
								<delimiter>#</delimiter>
							</delimiters>
							<resources>
								<resource>
									<directory>src/main/resources/</directory>
									<filtering>true</filtering>
								</resource>
								<resource>
									<directory>src/main/resources.${spring.profiles.active}</directory>
									<filtering>false</filtering>
								</resource>
							</resources>
						</configuration>
					</execution>
				</executions>
			</plugin>

		</plugins>

3.打包war包

第一先在pom文件设置:war方式打包,而不jar

<!-- 指定为war包内容将被tomcat所指定 -->
	<packaging>war</packaging>

第二步application入口需要处理下:


@SpringBootApplication
@MapperScan("com.example.ljia.mapper")
public class LjiaApplication extends SpringBootServletInitializer {


    /**
     * 测试直接用main启动(并指定相应的profile环境值)
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(LjiaApplication.class, args);
    }


    /**
     * Tomcat重要的配置内容
     * tomcat容器发布入口 【线上发布使用的,步骤也是:mvn -P 对应的环境  再进行放入的运行webapp目录下】
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
        return applicationBuilder.sources(LjiaApplication.class);
    }
}

第三步执行maven指令:

mvn clean package -Dmaven.test.skip=true -Ptest
mvn clean package -Dmaven.test.skip=true -Pdev
mvn clean package -Dmaven.test.skip=true -Pprod

4.直接发布到线上,跟运行application一致

猜你喜欢

转载自blog.csdn.net/zuozhiyoulaisam/article/details/86480992