maven-maven使用-P参数打包不同环境

maven-maven使用-P参数打包不同环境

一般的,开发环境有dev, test 和 pro,他们的配置多有不同,那么就可以使用 maven -P这个参数进行多环境打包

clean install -Dmaven.test.skip=true -P pro,就可以切换成生产环境,和 jenkins 配合简直不要太爽!!

举个例子

以 boot 项目来说,现有目录结构:

/src
    /main
        /java
        /resources
            /static
            /templates
            application.yml
            application-dev.yml
            application-pro.yml
            application-test.yml

application.yml

server:
  port: 8080
spring:
  profiles:
     # @spring.profiles.active@ 变量将会随着参数的传入被替换
    active: @spring.profiles.active@

然后三个不同环境的配置文件分别为:

application-dev.yml:

server:
  port: 8080
spring:
  application:
    name: mpp-dev

application-pro.yml:

server:
  port: 8081
spring:
  application:
    name: mpp-pro

application-test.yml:

server:
  port: 8082
spring:
  application:
    name: mpp-test

配置 maven 的 pom 文件,默认激活 dev 环境:

<profiles>
    <profile>
        <id>devid>
        <activation>
            <activeByDefault>trueactiveByDefault>
        activation>
        <properties>
            <spring.profiles.active>devspring.profiles.active>
        properties>
    profile>
    <profile>
        <id>testid>
        <activation>
            <activeByDefault>falseactiveByDefault>
        activation>
        <properties>
            <spring.profiles.active>testspring.profiles.active>
        properties>
    profile>
    <profile>
        <id>proid>
        <activation>
            <activeByDefault>falseactiveByDefault>
        activation>
        <properties>
            //spring.profiles.active即在application.yml文件中
            //定义的参数@spring.profiles.active@
            <spring.profiles.active>prospring.profiles.active>
        properties>
    profile>
profiles>

根据环境过滤只有当前环境的配置文件:

<resources>
    <resource>
        <directory>src/main/resourcesdirectory>
        
        <filtering>truefiltering>
        <excludes>
            <exclude>application-*.ymlexclude>
        excludes>
    resource>
    <resource>
        <directory>src/main/resourcesdirectory>
        
        <filtering>truefiltering>
        <includes>
            <include>application-${spring.profiles.active}.ymlinclude>
        includes>
    resource>
resources>

需要加入 plugin 为:

<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-resources-pluginartifactId>
    <version>3.1.0version>
plugin>

测试

在当前项目 pom 文件所在的目录下打开命令行,输入 clean package -Dmaven.test.skip=true -P pro

可以看到:

/target
    /classes
        /com
        application.yml
        application-pro.yml

打开 application.yml 文件:

server:
  port: 8080
spring:
  profiles:
    active: pro

可以发现之前 @spring.profiles.active@ 变量已经被替换成了 pro ,而且配置文件只关于生产环境,而且dev 和 test 的配置文件都已经被过滤了

你可能感兴趣的:(maven)