精华内容
下载资源
问答
  • 公司在使用jenkins部署测试环境代码,直接发布war包的话配置文件得修改,很影响开发,于是 使用maven的profiles来配置多环境配置文件,方便部署 1、在pom文件中添加profiles节点 每一个profile子节点代表一个环境,...

    公司在使用jenkins部署测试环境代码,直接发布war包的话配置文件得修改,很影响开发,于是 使用maven的profiles来配置多环境配置文件,方便部署
    1、在pom文件中添加profiles节点

    在这里插入图片描述
    每一个profile子节点代表一个环境,id代表maven部署打包时指定的环境参数,profiles.active节点指定当前环境的配置文件所在目录,该目录是相对于src/main/resources目录而言的,其中activeByDefault节点指定当前环境是否是默认环境
    2、配置pom文件的build节点,设置资源排除
    在这里插入图片描述
    将配置的环境目录在打包时配置排除,只打包当前指定的开发环境的资源文件
    3、maven编译打包
    使用maven命令
    mvn clean package -Ptest 进行打包

    展开全文
  • Maven 区分开发环境和测试环境配置两种方式方法一:(过滤方式)第一步、创建配置文件第二步:配置需要读取的配置文件第三步:配置MAVEN 的 pom.xml文件第四 步:打包方法二:(选择打包方式) == 作者:sunxiakun ...

    == 作者:sunxiakun 原文:https://blog.csdn.net/sunxiakun/article/details/65444744 ==

     项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。
     今天我介绍下这个问题怎么解决。
    

    ** 注意:本配置的前提是项目必须是MAVEN项目。**

    方法一:(过滤方式)

    在这里插入图片描述

    第一步、创建配置文件

    在项目的src/main/filter目录下创建 development.properties product.properties 两个文件。
    development是开发配置内容。product是正式配置内容
    (通过连接不同的数据库来模拟演示)
    例如development:

    driverClassName=com.mysql.jdbc.Driver
    jdbc_url=jdbc\:mysql\://192.168.1.5:3306/testdev?useUnicode\=true&characterEncoding\=utf8
    jdbc_username=sun
    jdbc_password=123456
    
    

    product如下:

    driverClassName=com.mysql.jdbc.Driver
    jdbc_url=jdbc\:mysql\://192.168.1.5:3306/testpro?useUnicode\=true&characterEncoding\=utf8
    jdbc_username=sx
    jdbc_password=124565
    

    第二步:配置需要读取的配置文件

    system.properties中需要变化的变量使用参数进行配置,如

    driverClassName=com.mysql.jdbc.Driver
    jdbc_url=${jdbc_url}
    jdbc_username=${jdbc_username}
    jdbc_password=${jdbc_password}
    

    注意:${jdbc.url} 直接对应上面配置的development.properties或product.properties文件中的名称。

    第三步:配置MAVEN 的 pom.xml文件

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <!-- 测试环境 -->
                <env>development</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <!-- 正式环境 -->
                <env>product</env>
            </properties>
        </profile>
    </profiles>
    <build>
        <finalName>web</finalName>
        <filters>
            <filter>src/main/resources/filter/${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>filter/*.properties</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    
    

    profiles说明:
    profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果

    		<id>dev</id>
            <properties>
                <!-- 测试环境 -->
                <env>development</env>
            </properties>
    

    key-value
    env=development(可以有多个键值对)
    默认启用的是dev环境配置:

    <activation>
               <activeByDefault>true</activeByDefault>
    </activation>
    

    ​配置文件路径,此路径可以自定义:

    <filter>src/main/resources/filter/${env}.properties</filter>
    

    ​maven中配置文件目录:
    src/main/resources

    第四 步:打包

    ​打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
    ​打产品包 mvn -Pprod install
    

    结果:src/main/resources/config/system.properties根据mvn -P 参数决定值

    mvn clean install -Pprod -DskipTests
    

    方法二:(选择打包方式)

    在这里插入图片描述
    pom.xml内容:

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <!-- 测试环境 -->
                <env>development</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <!-- 正式环境 -->
                <env>product</env>
            </properties>
        </profile>
    </profiles>
    <build>
        <finalName>web</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
                <excludes>
                    <exclude>development/*</exclude>
                    <exclude>product/*</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/${env}</directory>
            </resource>
        </resources>
    </build>
    
    

    war文件结构(解压后):
    ​打本地包 mvn -Pdev install或者mvn install(因为本例activeByDefault配的为true)
    在这里插入图片描述
    打产品包 mvn -Pprod install
    在这里插入图片描述

    注意:打包时请先mvn clean一下,否则可能两类配置文件同时存在引起误解
    如果要带上文件夹:

     <resource>
                <directory>src/main/resources/${env}</directory>
     </resource>
    

    替换为

    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>${env}/*.properties</include> 
           <!--使用<include>${env}</include>则加不进去-->
        </includes>
    </resource>
    
    

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  •  项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。今天我介绍下这个问题怎么解决。  注意:本配置的前提是项目必须是MAVEN项目。  第一步、创建配置...

             项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。今天我介绍下这个问题怎么解决。

           注意:本配置的前提是项目必须是MAVEN项目。

          第一步、创建配置文件

               在项目的src/main/resources目录下创建 local.properties    prod.properties  两个文件。

               local是本地的配置内容。prod是正式配置内容

               例如local:

    jdbc.driver=oracle.jdbc.driver.OracleDriver
    #本地测试环境
    jdbc.url=jdbc:oracle:thin:@111.129.207.201:5206:box11g
    jdbc.username=zjkf
    jdbc.password=box123456

          prod同理

          第二步:配置需要读取的配置文件

               system.properties中需要变化的变量使用参数进行配置,如             

    jdbc.driver=oracle.jdbc.driver.OracleDriver
    jdbc.url=${jdbc.url}
    jdbc.username=${jdbc.username}
    jdbc.password=${jdbc.password}     
    

            注意:${jdbc.url} 直接对应上面配置的local.properties或prod.properties文件中的名称。

          第三步:配合MAVEN 的 pom.xml文件

              

    <profiles>
    		<profile>
    			<id>local</id>
    			<properties>
    				<env>local</env>
    			</properties>
    			<activation>
    				<activeByDefault>true</activeByDefault>
    			</activation>
    		</profile>
    		<profile>
    			<id>prod</id>
    			<properties>
    				<env>prod</env>
    			</properties>
    		</profile>
    	</profiles>
    <build>
             <filters>
    	<filter>src/main/resources/config/${env}.properties</filter>
             </filters>
             <resources>
    	<resource>
    	       <directory>src/main/resources</directory>
    		<filtering>true</filtering>
    	</resource>
              </resources>
    </build>

     配置解释:
        <id>local</id>
         ​打包时跟在P参数后的id
         <env>local</env>
        ​配置文件名,如本例为local,则对应的配置文件为src/main/resources/filter/local.properties
           <activation>
               <activeByDefault>true</activeByDefault>
            </activation>
        ​此配置表示默认使用,即打包时如果不使用P参数则默认使用此配置文件
         <filter>src/main/resources/filter/${env}.properties</filter>
        ​配置文件路径,此路径可以自定义
         <directory>src/main/resources</directory>
        ​maven中配置文件目录,一般不会更改。

        第四 步:打包
        ​打本地包 mvn -Plocal install或者mvn install(因为本例activeByDefault配的为true)
        ​打产品包 mvn -Pprod install

         配置就是这么简单,但是这个种配置有一个弱点,因为是基于MAVEN的环境,如果在本地完生产包后。项目的配置会变成生产的配置,如果任然要用你本地的配置,那么你需要在打本地包来把配置更新回来。

     

    展开全文
  • maven打包的时候,就需要根据不同的环境,修改配置文件的属性。导致效率很地下,而且很容易出错! 那么有没有可能在打包的时候,根据命令不同,自动的切换到目标环境的配置呢? 答案当然是有的! 2.效果什么样? ...

    maven区分环境打包

    1.解决了什么问题?

    我们经常会碰到,一套程序需要部署到生产,测试,开发三套甚至更多的环境上。
    在maven打包的时候,就需要根据不同的环境,修改配置文件的属性。导致效率很地下,而且很容易出错!
    那么有没有可能在打包的时候,根据命令不同,自动的切换到目标环境的配置呢?
    答案当然是有的!

    2.效果什么样?

    mvn install -P[profile的id属性值]

    • 执行mvn install -Pdev 打出来的包,可用于部署到开发环境。
    • 执行mvn install -Pqa 打出来的包,可用于部署到测试环境。
    • 执行mvn install -Pprod 打出来的包,可用于部署到开发环境。

    3.如何实现?

    3.1原理

    本文采用的是maven提供的占位符属性替换的方式实现的。即:

    • 针对每一个环境,建立一组配置文件,如图filter文件夹中的内容。
    • 举例:在dev(开发)环境下,在打包时用timingdb-dev.properties中的属性值,替换timingdb.properties中的属性值。

    注意是文件中属性值替换,不是文件整体替换
    在这里插入图片描述

    3.2如何实现属性值替换?使用占位符

    • 被替换的文件中的属性,如:timingdb.properties
      在这里插入图片描述
    • 环境源配置文件中的属性,如:timingdb-dev.properties
      在这里插入图片描述

    3.3 如何配置maven

    • 全局build配置,主要是决定哪些配置文件中的占位符需要被替换!哪些文件不进行占位符属性替换!<filtering>false/true</filtering>
    <build>
    ……
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.bpmn</include>
                <include>**/*.pdf</include>
                <include>**/*.cab</include>
                <include>**/*.docx</include>
                <include>**/*.doc</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.conf</include>
            </includes>
        </resource>
    </resources>
    </build>
    
    • 分环境build配置,主要用于说明:
    1. 环境的唯一标志:id(用于打包命令)
    2. 用哪些文件中的属性去替换:filter配置

    activeByDefault:true是指在不指定-P情况下打包的默认profile选择项!

    
    <profiles>
        <profile>
            <id>dev</id>
            <build>
                <filters>
                    <filter>src/main/resources/filters/timingdb-dev.properties</filter>
                    <filter>src/main/resources/filters/fdfs_client-dev.conf</filter>
                </filters>
            </build>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>qa</id>
            <build>
                <filters>
                    <filter>src/main/resources/filters/timingdb-qa.properties</filter>
                    <filter>src/main/resources/filters/fdfs_client-qa.conf</filter>
                </filters>
            </build>
        </profile>
        <profile>
            <id>prod</id>
            <build>
                <filters>
                    <filter>src/main/resources/filters/timingdb-prod.properties</filter>
                    <filter>src/main/resources/filters/fdfs_client-prod.conf</filter>
                </filters>
            </build>
        </profile>
    
    </profiles>
    
    展开全文
  • 项目开发过程中,如果一个项目经常发布,那么在打包之前会不断的修改配置文件,这无疑是很麻烦的一件事情。今天我介绍下这个问题怎么解决。  注意:本配置的前提是项目必须是MAVEN项目。 方法一:(过滤方式) 目录...
  • 1,pom.xml中resources 注意事项,这里有三个resource,按照图上编写 ...3,只用定义一个数据库连接到配置文件,这里与jdbc为例 这里的mysql.url为上面定义的变量值。 4,打包 在我们的ma...
  • 打包完成后,手动调整配置文件,工作重复度很高,可以实现maven根据参数区分不同的运行环境打包不同的配置文件。 1为不同的环境分别建配置文件夹,笔者的配置文件目录如下(其实prod和test包中仅仅需要...
  • maven 不同环境打包

    千次阅读 2019-02-19 10:26:45
    此时给项目打包,就会很麻烦,因为配置文件不同比如数据库链接,文件地址等,所以打包的时候需要修改配置文件maven这里提供了很便利的操作,通过配置文件和命令就可以分别打出来不同的war包,在不同的环境中使用;...
  • prod.yml,当然我们可以修改application.yml中的active:dev来修改,但是在使用jenkins发版,打包的时候,总是要修改配置文件,很是繁琐,所以改为通过配置maven的profiles,使用maven打包区分不同的环境 ...
  • 由于开发过程与生产环境发布过程的服务器环境配置不同,所以在项目搭建过程中,需要对项目的服务环境配置文件进行区分,以方便打包发版
  • jar包内不能包含别的环境配置文件,(否则反编译jar包可以看到别的环境的配置,我们公司业务是一个城市一个环境,各个城市间的配置不希望泄露) 启动shell脚本中的内容会根据不同环境来修改脚本内的内容 实现 pom
  • 使用maven管理项目有一个好处是就是可以针对不同的环境使用不同的编译打包设置,方便了多环境下的打包部署,一般我们开发项目都会有至少开发环境和正式环境两个,针对这两个环境配置信息也会有所不同,比如数据库...
  • 本篇和大家分享的是 Spring Boot 打包并结合 Shell 脚本命令部署,重点在分享一个shell ...通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 通过a
  • 注意: 如果这里只有这个文件,打包时会默认将src/main/resources文件夹中的配置文件打到项目中 一、配置教程: 1、 添加src/main/filters目录,子目录结构如下: ----filters (资源根目录) ----dev ...
  • maven提供了一组属性以供开发人员灵活搭配,可以根据环境打包,比如测试环境:mvn package -DskipTests -P test,-P也就是指定profile里面id为test的子项配置来打包。在pom文件里面,可以指定多套配置文件,下面...
  • 这时可以用Spring 的PropertyPlaceholderConfigurer 来配置受环境影响的变量,这种使用多个配置文件的方式,但是我觉得这样不够灵活,所以就使用了maven的profiles 来实现,在打包的时候maven就会根据指定的配置参数...
  • 本节主要介绍配置文件... 数据库配置区分测试、开发、生成,每个环境有不同的配置,通过maven打包命令集成不同的配置默认打包打的是开发环境       system.properties  系统配置文件,存放一些环境配置,...
  • 目录前言Spring Boot 自带的多环境配置创建不同环境的配置文件指定运行的环境Maven 的多环境配置创建多环境配置文件定义激活的变量pom 文件中定义 profiles资源过滤总结总结前言日常开发中至少有三个环境,分别是...
  • 这时可以用Spring 的PropertyPlaceholderConfigurer 来配置受环境影响的变量,这种使用多个配置文件的方式,但是我觉得这样不够灵活,所以就使用了maven的profiles 来实现,在打包的时候maven就会根据指定的配置参数...
  • Maven profile整合Spring profile

    千次阅读 2019-03-05 16:52:00
    Maven的profile用于在打包时根据指定环境替换不同环境配置文件配置,如数据库配置。Spring的Profile可以用于在不同的环境下加载不同的bean,例如@Profile注解。两者一个是Maven编译和打包时生效,另一个是运行时...
  • 一。背景 jwell-km-api-client是web工程,依赖了一个jar...jwell-km-api-client工程在打包时,要区分测试环境和正式环境。包括其依赖的jwell-wms-api工程里面的地址也要自动区分测试环境和正式环境。 二。处理

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

maven打包区分环境配置文件