springboot jar包package打包不同环境的配置信息

    springboot开发运行时通常需要处理不同的配置,配置分为通用配置信息和不同环境配置信息,如测试、开发、生产等,如何便捷的处理使用配置呢?

  假如有配置信息name=JavaDeveloper为不同环境共用,env=production在生产环境pro使用,env=development在开发环境dev使用,在application.yaml配置如下:

spring:
  profiles:
    active: @profileActive@
name: JavaDeveloper

在application-dev.yaml配置如下:

env: development
在application-pro.yaml配置如下:

env: production

在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.chenhaiyan</groupId>
   <artifactId>Demo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>Demo</name>
   <description>Demo project for Spring Boot</description>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.0.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <profiles>
      <profile>
         <id>dev</id>
         <properties>
            <profileActive>dev</profileActive>
         </properties>
         <activation>
            <activeByDefault>false</activeByDefault>
         </activation>
      </profile>
      <profile>
         <id>test</id>
         <properties>
            <profileActive>test</profileActive>
         </properties>
         <activation>
            <activeByDefault>false</activeByDefault>
         </activation>
      </profile>
   </profiles>
   <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>
      <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>1.2.46</version>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   <!-- 与nexus集成 -->
   <distributionManagement>
   </distributionManagement>
   <build>

      <resources>
         <resource>
            <directory>src/main/resources</directory>
            <includes>
               <include>deployment.yaml</include>
               <include>application-${profileActive}.yaml</include>
               <include>application.yaml</include>
               <include>*.xml</include>
            </includes>
            <filtering>true</filtering>
         </resource>
      </resources>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
               <source>${java.version}</source>
               <target>${java.version}</target>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
               <delimiters>
                  <delimiter>@</delimiter>
               </delimiters>
               <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

设置mvn 打包:

mvn package -P dev


是不是application-test.yaml 文件不见了 ,

在看target/classes下的application.yaml文件内容为:

spring:
  profiles:
    active: dev
name: JavaDeveloper

测试Controller如下:

package com.chenhaiyan.ShellDemo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/testBody")
@Slf4j
public class TestBodyController {
    @Value("${name}")
    private String name;
    @Value("${env}")
    private String env;
    @RequestMapping(value = "getValue",method = RequestMethod.GET)
    public String getValue(@RequestParam(value = "str") String str){
        if("name".equals(str)){
            return name;
        }
        if("env".equals(str)){
            return env;
        }
        return "error";
    }
}

jar包打包好之后,点击运行,访问Controller 方法:

获取不同环境配置:


获取公有配置:



还有疑问,欢迎留言!over


猜你喜欢

转载自blog.csdn.net/u011357145/article/details/80016031