Maven适配多种运行环境的打包方案
来源:互联网 发布:Linux中的pg命令 编辑:程序博客网 时间:2024/05/22 00:29
项目从开发到部署会历经多个运行环境,如开发环境、测试环境和生产环境,不同环境中项目的配置文件通常也会不同,典型的如数据库连接配置。我们当然不希望每次部署打包前都去修改配置文件以适配环境,利用Maven的Profile和资源过滤,可以实现自动按环境设置调整配置文件。
新建一个Maven项目,在src/main/resources添加两个配置文件。
log4j.xml
<log4j:configuration><appender name="common" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="${log4j.path}/debug.log" /><param name="Append" value="true" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n" /></layout></appender><root> <priority value ="info"/> <appender-ref ref="common"/> </root></log4j:configuration>
datasource.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="jdbcUrl" value="${datasource.jdbcUrl}" /><property name="user" value="${datasource.user}" /><property name="password" value="${datasource.password}" /><property name="minPoolSize" value="3" /><property name="maxPoolSize" value="100" /></bean>
其中,${log4j.path}、${datasource.jdbcUrl}、${datasource.user}、${datasource.password}是打包时需要按目标环境替换的内容。
接下来在pom.xml中配置替换规则:
<profiles><profile><id>product</id><activation><activeByDefault>false</activeByDefault></activation><properties><log4j.path>/opt/logs</log4j.path><datasource.jdbcUrl>jdbc:mysql://localhost:3306/product?useUnicode=true&amp;characterEncoding=UTF8</datasource.jdbcUrl><datasource.user>someuser</datasource.user><datasource.password>somepwd</datasource.password></properties></profile><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><log4j.path>D:/Logs</log4j.path><datasource.jdbcUrl>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF8</datasource.jdbcUrl><datasource.user>root</datasource.user><datasource.password>123456</datasource.password></properties></profile></profiles><build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build>在profiles中定义了id分别为product和dev的两套profile,profile dev设置为默认激活,每个profile配置了一组properties,其中的4个元素名称分别对应log4j.xml和datasource.xml中的红字部分。
resources中定义了打包前扫描的文件夹,这里指定针对src/main/resources目录下的文件进行扫描并替换。
下面来做测试,首先执行
mvn clean package
这里没有指定激活的profile,将按默认激活规则即dev环境生成配置。查看生成的jar文件中的配置文件内容
log4j.xml
<log4j:configuration><appender name="common" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="D:/Logs/debug.log" /><param name="Append" value="true" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n" /></layout></appender><root> <priority value ="info"/> <appender-ref ref="common"/> </root></log4j:configuration>datasource.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8" /><property name="user" value="root" /><property name="password" value="123456" /><property name="minPoolSize" value="3" /><property name="maxPoolSize" value="100" /></bean>
改为按product环境打包,执行
mvn clean package -P product
查看生成的jar文件中的配置文件内容
log4j.xml
<log4j:configuration><appender name="common" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="/opt/logs/debug.log" /><param name="Append" value="true" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n" /></layout></appender><root> <priority value ="info"/> <appender-ref ref="common"/> </root></log4j:configuration>datasource.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/product?useUnicode=true&characterEncoding=UTF8" /><property name="user" value="someuser" /><property name="password" value="somepwd" /><property name="minPoolSize" value="3" /><property name="maxPoolSize" value="100" /></bean>
除了上面演示中的命令行指定激活和默认激活外,Maven还支持依据操作系统、文件是否存在、系统属性值等条件激活;匹配规则上可以指定多个目录及对目录指定是否开启资源过滤,甚至允许替换Web资源如图片、css文件等。合理运用可以灵活的应对各种差异环境要求。
0 0
- Maven适配多种运行环境的打包方案
- maven 不同环境打包方案
- maven分环境打包方案
- maven 不同环境打包方案
- maven根据不同的运行环境,打包不同的配置文件
- Maven实践(十)---多种打包jar的方式
- MAVEN打包可直接运行的jar
- maven打包可运行的JAR
- maven打包可运行的JAR
- Maven 生成可运行的jar的多种方式
- Maven 打包 关于线下能运行不能打包的原因
- maven项目打包运行
- Maven 打包运行
- maven 打包,运行
- Maven 对不同的部署环境打包
- maven打包以及groovy环境的搭建
- Maven根据不同的环境打包配置文件
- maven assembly实现不同环境的打包
- CodeBlocks静态链接与动态链接设置
- Python——*args的用法
- OJ---DNA序列*
- 素数欧拉函数同时筛和打表
- linux中fork()函数详解(原创!!实例讲解)(转载)
- Maven适配多种运行环境的打包方案
- JQGrid通过json请求nodejs数据,表格信息保存在mysql数据库中
- Python——**kwargs
- Android代码模拟物理、屏幕点击事件
- 验证数字的正则表达式集
- 解决IE9浏览器缓存问题
- linux高级编程——编程中的内存管理
- 本地APPRTC服务器配置
- install nvidia cuda and artistic video , neuralstyle