Spring.profile配合Jenkins发布War包,实现开发、测试和生产环境的按需切换
前两篇不错
Spring.profile实现开发、测试和生产环境的配置和切换 - Strugglion - 博客园
https://www.cnblogs.com/strugglion/p/7091021.html
详解Spring中的Profile - 简书
https://www.jianshu.com/p/948c303b2253
spring-mvc-hibernate.xml
<!-- JSR303 Validator定义 -->
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> <!-- 引入属性文件 -->
<!-- 基于Spring Profile机制的database连接配置 -->
<!-- 开发环境配置文件 -->
<beans profile="dev">
<context:property-placeholder location="classpath:profiles/dbconfig_dev.properties" ignore-unresolvable="true" />
</beans>
<!-- 测试环境配置文件 -->
<beans profile="test">
<context:property-placeholder location="classpath:profiles/dbconfig_test.properties" ignore-unresolvable="true" />
</beans>
<!-- 生产环境配置文件 -->
<beans profile="prod">
<context:property-placeholder location="classpath:profiles/dbconfig_prod.properties" ignore-unresolvable="true" />
</beans>
</beans>
web.xml
<!-- 设置spring.profiles.active后则spring.profiles.default失效,web启动时会加载对应的环境信息 -->
<!-- 为了适应jenkins的持续集成发布crm.war方案,在tomcat的bin/setenv.sh中追加如下参数:-Dspring.profiles.active="xxxx"。xxx为dev/test/prod其中之一。 -->
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</context-param>
<!--
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
-->
setenv.sh
[root@crm_web apache-tomcat-7.0.]# cat bin/setenv.sh
CATALINA_OPTS="$CATALINA_OPTS -Dspring.profiles.active=test -Djava.rmi.server.hostname=192.168.66.16 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access"
setenv.bat
set CATALINA_OPTS=-Dspring.profiles.active=test -Djava.rmi.server.hostname=192.168.66.182 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
注意事项:
1.spring.profiles.active
2.profile 特性是在spring3.1中引入的,3.0还不支持。xml配置中的spring-beans-3.0.xsd,在3.0中解析不到3.1中的profile,所以必须替换成spring-beans-3.1.xsd
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
3.Nested <beans> must appear last in the file.
https://dzone.com/articles/spring-31-environment-profiles
Nested <beans> must appear last in the file.
文件有正确顺序的标签示例。
https://stackoverflow.com/questions/33869324/spring-profile-and-property-placeholder-exception
I would try to re-order the application context file, having the two profiles before <context:property-placeholder properties-ref="deployProperties" />.
http://www.cnblogs.com/davidwang456/p/4204569.html
// Any nested <beans> elements will cause recursion in this method. In
// order to propagate and preserve <beans> default-* attributes correctly,
// keep track of the current (parent) delegate, which may be null. Create
// the new (child) delegate with a reference to the parent for fallback purposes,
// then ultimately reset this.delegate back to its original (parent) reference.
// this behavior emulates a stack of delegates without actually necessitating one.
还得多读源码,如果不把<beans>放在<bean>,会导致循环引用的问题。
官方参考
3. New Features and Enhancements in Spring Framework 3.1
https://docs.spring.io/spring-framework/docs/3.2.0.RELEASE/spring-framework-reference/html/new-in-3.1.html
Spring 3.1 M2: Testing with @Configuration Classes and Profiles
http://spring.io/blog/2011/06/21/spring-3-1-m2-testing-with-configuration-classes-and-profiles/
Spring 3.1 M1: Introducing @Profile
http://spring.io/blog/2011/02/14/spring-3-1-m1-introducing-profile/
Spring Framework 3.1 M1 released
http://spring.io/blog/2011/02/11/spring-framework-3-1-m1-released/
11. Testing
https://docs.spring.io/spring-framework/docs/3.2.0.RELEASE/spring-framework-reference/html/testing.html#testcontext-framework
cbeams/spring-3.1-profiles-java: Sample demonstrating use of Spring 3.1's 'bean definition profiles' feature with @Configuration classes
https://github.com/cbeams/spring-3.1-profiles-java
Spring Framework Reference Documentation
http://files.cnblogs.com/files/kongkaikai/spring-framework-reference.pdf
Introduction · Spring Framework 4.x参考文档
http://blog.didispace.com/books/spring-framework-4-reference/
以下的作为参考
Spring实战——Profile - JackieZheng - 博客园
http://www.cnblogs.com/bigdataZJ/p/SpringInAction4.html
通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换 - 许恕 - CSDN博客
https://blog.csdn.net/xvshu/article/details/51133786
详解Spring中的Profile - 王云十三 - 博客园
https://www.cnblogs.com/SummerinShire/p/6392242.html
详解Spring中的Profile - 刘剑峰的博客 - CSDN博客
https://blog.csdn.net/jeffleo/article/details/71433655
spring @profile注解的使用 - 止水的专栏 - CSDN博客
https://blog.csdn.net/wild46cat/article/details/71189858
Spring.profile配合Jenkins发布War包,实现开发、测试和生产环境的按需切换的更多相关文章
- 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!
写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...
- jenkins发布.war包到本地tomcat
前提:保证jenkins构建打包成功 1.配置tomcat的用户名密码(此处tomcat为本地任意tomcat包,jenkins会通过Deploy war/ear to container配置的url ...
- 推荐几位jenkins发布war包和jar包大佬的博客
jenkins部署tomcat的war包和jar包 https://blog.csdn.net/liuxiaoming1109/article/details/89311696
- Spring.profile实现开发、测试和生产环境的配置和切换
软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spri ...
- Spring Boot发布war包流程
1.修改web model的pom.xml <packaging>war</packaging> SpringBoot默认发布的都是jar,因此要修改默认的打包方式jar为wa ...
- 【Linux】Jenkins以war包运行及开机启动配置(四)
本例介绍jenkins已war包运行及开机启动配置 环境:Linux环境(CentOS 7.4) 以war包运行 1.下载jenkins.war包 2.启动war包( 默认端口:8080,默认JENK ...
- Liferay 6.2 改造系列之二十二:如何发布WAR包
1.修改web资源并发布 如果修改了默认主题信息,需执行portal-web中的build-themes任务: 执行portal-web中的deploy任务: 2.修改portal-impl中的jav ...
- jenkins部署war包到远程服务器的tomcat
一.目的 jenkins上将war包,部署到远程服务器的tomcat上. 这边tomcat在windows 主机A上,版本apache-tomcat-8.5.23. jenkins在主机B上,cent ...
- 使用Tomcat发布war包
第一步:下载tomacat 1.下载地址:http://tomcat.apache.org 2.解压后目录如下 3.双击bin文件夹下startup.bat 即可启动tomcat, 计算机会弹出控制台 ...
随机推荐
- php学习----运算符
PHP 1.运算符 加减乘除与数学运算无异 但PHP的赋值运算符有两种,分别是: (1)"=":把右边表达式的值赋给左边的运算数.它将右边表达式值复制一份,交给左边的运算数.换而言 ...
- VS的快捷键汇总
C#中的快捷键,可以更方便的编写代码 CTRL + SHIFT + B 生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O 打开项目 CTRL + ...
- SpringCloudStream实战
Spring Cloud Stream是一个用于构建消息驱动的微服务应用程序的框架.Spring Cloud Stream构建于Spring Boot之上,用于创建独立的生产级Spring应用程序,并 ...
- 【转】MFC内嵌cef3浏览器内核
一.cef3内核的下载 可以从http://opensource.spotify.com/cefbuilds/index.html下载,注意:很多版本编译都可以通过 但是运行的时候会崩溃,以cef_b ...
- Python:Day21
序列化 我们把对象(变量)从内存中变成可存储或可传输的过程称之为序列化 json模块
- 【vue】vue +element 搭建及开发中项目中,遇到的错误提示
1. import Layout from '@/views/layout/Layout'; export default [ { // 配置路由,当路径为'/activePublic',使用组件ac ...
- ubuntu 学习
参考博客:http://www.cnblogs.com/resn/p/5800922.html 在Linux 里一切皆文件 / : 根 查看是否安装了中文支持:locale -a 如果有zh_CN.u ...
- 腾讯app自动化测试读后感
1.播放器播放视频,如何验证视频播放成功? 1.1播放时间>=0,获取Video标签里的current time判断. 1.2有播放画面,截屏获取. 框架自带的截图功能, 1.3有播放声音,获取 ...
- Spring Security(十七):5.8 Method Security
From version 2.0 onwards Spring Security has improved support substantially for adding security to y ...
- org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 '&' 后面
错误信息如下:org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 ‘’&’’ 后面 出现这个错误的原因是在xml中使用&,实际上xml中不支 ...