Maven Profiles 打包动态修改配置文件

Maven Profiles 打包动态修改配置文件

需求

maven 项目中的配置文件例如:src/main/java/resource/jdbc.properties

他看起来是这样的;


jdbc.test13.username=LIFELINEDEV
jdbc.test13.password=LIFELINEDEV
jdbc.test15.username=SCDPLATFORM
jdbc.test15.password=SCDPLATFORM
  • 我要在项目打测试环境包的时候动态的修改jdbc.test13.username=Hellotest
  • 我要在项目打包生产的时候动态的修改jdbc.test13.username=helloprod

解决方案

使用maven profile +com.juvenxu.portable-config-maven-plugin插件实现

  • 第一步定义好 profile

<profiles>
    <profile>
        
        <id>testid>
        <activation>
            
            <activeByDefault>trueactiveByDefault>
        activation>
        <properties>
            
            <package.environment>testpackage.environment>
        properties>
    profile>
    <profile>
        
        <id>prodid>
        <properties>
            
            <package.environment>prodpackage.environment>
        properties>
    profile>
profiles>
  • 第二步引入插件并进行配置
<plugins>
    
    <plugin>
        <groupId>com.juvenxu.portable-config-maven-plugingroupId>
        <artifactId>portable-config-maven-pluginartifactId>
        <version>1.1.5version>
        <executions>
            <execution>
                <goals>
                    <goal>replace-packagegoal>
                goals>
            execution>
        executions>
        
        <configuration>
		<portableConfig>
    	src/main/resources/portableConfig/${package.environment}.xmlportableConfig>
        configuration>
    plugin>
plugins>
  • 第三步编写插件需要的portableConfig配置文件

    我在src/main/resources目录下新建portableConfig文件夹

    根据需求新建test.xml

    
    
    <portable-config>
        
        <config-file path="WEB-INF/classes/jdbc.properties">
            
            <replace key="jdbc.test13.username">Hello testreplace>
        config-file>
        <config-file path="WEB-INF/classes/spring-config-bean.xml">
            
            <replace xpath="//bean[@id='kafkaData']/property[@name='groupId']/@vaule"> hellowordreplace>
        config-file>
    portable-config>
    

    根据需求新建pord.xml

    
    
    <portable-config>
    
    <config-file path="WEB-INF/classes/jdbc.properties">
        
        <replace key="jdbc.test13.username">Hello prodreplace>
    config-file>
    <config-file path="WEB-INF/classes/spring-config-bean.xml">
        
        <replace xpath="//bean[@id='kafkaData']/property[@name='groupId']/@vaule"> hellowordreplace>
    config-file>
    portable-config>
    
  • 第四步 测试

    进入项目根目录

    执行 mvn clean package -P test

    注意观察命令行

    [INFO] --- portable-config-maven-plugin:1.1.5:replace-package (default) @ Bridge_test ---
    [INFO] Replacing: F:\WORKDEV\Bridge_test\target\Bridge
    [INFO] Replacing file:
    F:\WORKDEV\Bridge_test\target\Bridge\WEB-INF\classes\jdbc.properties
    

    检查F:\WORKDEV\Bridge_test\target\Bridge\WEB-INF\classes\jdbc.properties中的值是否是我们期望的值;

    恭喜你已经完成动态打包修改参数 再也不用为了打不同环境的包而发愁了!

maven Profiles 知识

(1) 针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。

​ 你可以配置以下标签

  • `

(2) 针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。

(3) 全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。

​ 当Profiles 写在Settting.xml文件中,此时的Setting如果是${MAVEN_HOME}\conf\settings.xml中 例如下

​ 您只能修改部分以及额外的部分



<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <pluginGroups>

  pluginGroups>

  <proxies>

  proxies>


  <servers>

  servers>


  <mirrors>

	 <mirror>
     <id>alimavenid>
     <name>aliyun mavenname>
     <url>http://maven.aliyun.com/nexus/content/groups/public/url>
     <mirrorOf>centralmirrorOf>
    mirror>
  mirrors>

 
  <profiles>
    <profile>
      <id>appserverConfigid>
      <properties>
        <appserver.home>devappserver.home>
      properties>
    profile>
  profiles>
 
  <activeProfiles>
    <activeProfile>appserverConfigactiveProfile>
  activeProfiles>

  
settings>

那么此时在项目的Pom.xml文件中是可以使用${appserver.home} 引用到该值的

如果定义在特定用户的profile配置中 经过测试 项目的Pom.xml文件 不能应用定义的值!!

官网文档链接

你可能感兴趣的:(Maven Profiles 打包动态修改配置文件)