• maven profiles多环境配置


    maven profiles多环境配置

    今天做了一个小项目,需要配置开发、测试、预发布、生产四套环境配置文件,正常是用配置中心的,但是我的项目还没上线,所以想下maven的profiles+filters,我看了下官网对profiles的介绍,官网profiles地址,一个字,累。

    开始吧,要想实现多环境打包,总共分6步

    步骤一、在src/main 下创建filters文件夹,maven文件目录结构里建议有filters文件夹(感兴趣的可以自己查下maven文件结构),这个和filters配合使用

    步骤二、编写profiles, 这里需要说明两点 1:<properties>节点里的名字[profile-name] 这个可以自己定义,后面的<filter>节点要用到

         2:  <activation><activeByDefault>true</activeByDefault></activation> 默认激活环境,一定要有,不然${profile-name}会报异常

    1.  
      <profiles>
    2.  
      <profile>
    3.  
      <id>dev</id>
    4.  
      <properties>
    5.  
      <profile-name>dev</profile-name>
    6.  
      </properties>
    7.  
      </profile>
    8.  
      <profile>
    9.  
      <id>test</id>
    10.  
      <properties>
    11.  
      <profile-name>test</profile-name>
    12.  
      </properties>
    13.  
      <activation>
    14.  
      <activeByDefault>true</activeByDefault>
    15.  
      </activation>
    16.  
      </profile>
    17.  
      <profile>
    18.  
      <id>prod</id>
    19.  
      <properties>
    20.  
      <profile-name>prod</profile-name>
    21.  
      </properties>
    22.  
      </profile>
    23.  
      <profile>
    24.  
      <id>pre</id>
    25.  
      <properties>
    26.  
      <profile-name>pre</profile-name>
    27.  
      </properties>
    28.  
      </profile>
    29.  
      </profiles>

    步骤三、编写filters ,再次强调${profile-name} 是<profile>的properties里的自定义的名字,profiles 必须指定默认激活环境,参看步骤二

    1.  
      <build>
    2.  
      <filters>
    3.  
      <filter>src/main/filters/application_${profile-name}.properties</filter>
    4.  
      </filters>
    5.  
      ...... 省略其它配置
    6.  
      <build>

    步骤四、在build里添加<resources>,maven打包默认会把src/main/resources下的文件都打包,并且指定是否要开启filtering,设置为true 会加载filters文件夹下符合要求的文件中的值

    1.  
      <resources>
    2.  
      <resource>
    3.  
      <directory>src/main/resources</directory>
    4.  
      <filtering>true</filtering>
    5.  
      <excludes>
    6.  
      <exclude>src/main/resources/application_backup.properties</exclude>
    7.  
      </excludes>
    8.  
      </resource>
    9.  
      </resources>

    步骤五、在build里添加maven打包插件,我使用了maven-assembly-plugin自定义打包插件,它需要自定义一个xml文件,

    <descriptor>src/main/assembly/package.xml</descriptor>
    
    1.  
      <plugin>
    2.  
      <artifactId>maven-assembly-plugin</artifactId>
    3.  
      <version>3.1.0</version>
    4.  
      <executions>
    5.  
      <execution>
    6.  
      <id>make-assembly</id>
    7.  
      <phase>package</phase>
    8.  
      <goals>
    9.  
      <goal>single</goal>
    10.  
      </goals>
    11.  
      <configuration>
    12.  
      <descriptors>
    13.  
      <descriptor>src/main/assembly/package.xml</descriptor>
    14.  
      </descriptors>
    15.  
      </configuration>
    16.  
      </execution>
    17.  
      </executions>
    18.  
      </plugin>

    package.xml文件

    1.  
      <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
    2.  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3.  
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    4.  
      <id>${profile-name}</id>
    5.  
      <formats>
    6.  
      <format>zip</format>
    7.  
      </formats>
    8.  
      <includeBaseDirectory>false</includeBaseDirectory>
    9.  
      <fileSets>
    10.  
      <fileSet>
    11.  
      <directory>${basedir}/src/main/resources/</directory>
    12.  
      <includes>
    13.  
      <include>application.properties</include>
    14.  
      </includes>
    15.  
      <outputDirectory>config</outputDirectory>
    16.  
      <filtered>true</filtered>
    17.  
      </fileSet>
    18.  
      <fileSet>
    19.  
      <directory>${basedir}/target/</directory>
    20.  
      <includes>
    21.  
      <include>${project.artifactId}-${project.version}.jar</include>
    22.  
      </includes>
    23.  
      <outputDirectory>.</outputDirectory>
    24.  
      </fileSet>
    25.  
      <fileSet>
    26.  
      <directory>${basedir}/target/scripts/</directory>
    27.  
      <includes>
    28.  
      <include>*.sh</include>
    29.  
      </includes>
    30.  
      <directoryMode>755</directoryMode>
    31.  
      <outputDirectory>bin</outputDirectory>
    32.  
      </fileSet>
    33.  
      <fileSet>
    34.  
      <directory>${project.build.outputDirectory}/docs</directory>
    35.  
      <includes>
    36.  
      <include>*.*</include>
    37.  
      </includes>
    38.  
      <outputDirectory>docs</outputDirectory>
    39.  
      </fileSet>
    40.  
      </fileSets>
    41.  
      </assembly>

    步骤六、打包 -P 指定打包环境,-Dmaven.test.skip=true 跳过测试,不然的话会检查配置文件是否能正常连接等等,比如会测试zk是否可用啊什么的,如果不可以打包会失败的。开发环境和线上肯定是隔离的,所以要指定跳过检查。生成的包在项目目录下的target文件夹下,mvn package会生成target文件夹  mvn clean会清除target文件夹的内容。

    mvn package -P [profile-name] -Dmaven.test.skip=true
  • 相关阅读:
    js类型自动转换以及==对比规则
    js改变作用域链
    cookie简单实例
    js操作cookie
    body设置margin为0
    inline-block和block元素水平居中显示
    执行git clone遇到警告解决办法
    git中各大写字母表示含义
    git命令报错
    linux.txt
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/11025222.html
Copyright © 2020-2023  润新知