- 浏览: 2187904 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
时隔半年,再次使用Spring Boot快速搭建微服务,半年前使用的版本是1.2.5,如今看官网最新的release版本是1.4.0,那就用最新的来构建,由于部署环境可能有多套所以使用maven-filter插件,定义多套环境的配置文件,最后使用的时候:
可以采用下面的几个命令来构建不同环境的打包:
maven clean package -Pdev maven clean package -Ptest maven clean package -Pproduct
项目结构截图如下:
pom依赖如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.monitor.bigscreen</groupId> <artifactId>monitor-bigscreen-sql</artifactId> <version>1.0.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <elasticsearch.version>2.3.4</elasticsearch.version> <junit.version>4.12</junit.version> <fast.json>1.2.15</fast.json> <spring.boot.version>1.4.0.RELEASE</spring.boot.version> <druid.version>1.0.15</druid.version> <jdbc.mysql.version>5.1.6</jdbc.mysql.version> </properties> <!--<parent>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-starter-parent</artifactId>--> <!--<!–此处不能甩变量替代–>--> <!--<version>1.4.0.RELEASE</version>--> <!--</parent>--> <!--使用上面的父parent或者下面的依赖插件引入父依赖--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <type>pom</type> <version>1.4.0.RELEASE</version> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--连接池druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!--spring-boot-web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!--使用jetty--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <!--引入mysql的连接驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${jdbc.mysql.version}</version> </dependency> <!--模板使用velocity--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-velocity</artifactId> </dependency> <!--spring-test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!--spring-jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> </dependencies> <build> <filters> <filter>src/main/filters/xuele-${build.profile.id}.properties</filter> </filters> <!--指定下面的目录为资源文件--> <resources> <!--设置自动替换--> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> <!--也可以用排除标签--> <!--<excludes></excludes>--> <!--开启过滤--> <filtering>true</filtering> </resource> </resources> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </pluginManagement> </build> <profiles> <!--默认激活开发配置,使用index-dev.properties来替换实际的文件key--> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <build.profile.id>dev</build.profile.id> </properties> </profile> <!-- 测试环境配置 --> <profile> <id>test</id> <properties> <build.profile.id>test</build.profile.id> </properties> </profile> <!-- 生产环境配置 --> <profile> <id>product</id> <properties> <build.profile.id>product</build.profile.id> </properties> </profile> </profiles> </project>
然后在跑单元测试的时候,出乎意料的报了下面的一个错误:
Caused by: java.lang.IllegalArgumentException: Circular placeholder reference 'jdbc.url' in property definitions at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:141)
以前使用1.2.x的版本,没有遇到过这个错误,它的大致意思就是找不到jdbc.url这个属性,向配置文件里面赋值,我一直以为是自己某些文件,配置错误了,但检查了好几遍发现,并没有错误的地方,然后我把版本降到1.2.x的版本,确实可以编译通过,这说明了升级版本有一些api变化导致,于是网上几经google搜索,最后在stackoverflow找到了答案:
以前的赋值方式已经不支持了:
jdbc.url=${jdbc.url} jdbc.user=${jdbc.user} jdbc.password=${jdbc.password} jdbc.driveClassName=${jdbc.driveClassName}
最新的支持方式如下:
jdbc.url=@jdbc.url@ jdbc.user=@jdbc.user@ jdbc.password=@jdbc.password@ jdbc.driveClassName=@jdbc.driveClassName@
总结:如果遇到这种类似的问题,仅仅是因为升级版本造成的,最快的解决办法就是上官网看changes
看看最新的版本的使用方式。
参考链接:
http://stackoverflow.com/questions/36501017/maven-resource-filtering-not-working-because-of-spring-boot-dependency
https://github.com/spring-projects/spring-boot/issues/980
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
评论
5 楼
sucheng2016
2016-08-23
mark
4 楼
qindongliang1922
2016-08-17
imlzw 写道
下载原代码,直接debug解析parseStringValue应该就能快速定位问题了。
是一种思路
3 楼
imlzw
2016-08-17
下载原代码,直接debug解析parseStringValue应该就能快速定位问题了。
2 楼
qindongliang1922
2016-08-17
somefuture 写道
它的大致意思就是找不到jdbc.url这个属性
不是这样吧,他说的是大括号语法是不合法的。
不是这样吧,他说的是大括号语法是不合法的。
这么说,也没错
1 楼
somefuture
2016-08-17
它的大致意思就是找不到jdbc.url这个属性
不是这样吧,他说的是大括号语法是不合法的。
不是这样吧,他说的是大括号语法是不合法的。
发表评论
-
记一次log4j不打印日志的踩坑记
2019-09-22 01:58 1585### 起因 前几天一个跑有java应用的生产集群(200多 ... -
在Java里面如何解决进退两难的jar包冲突问题?
2019-07-23 19:10 1247如上图所示: es api组件依赖guava18.0 ... -
如何轻松理解二叉树的深度遍历策略
2019-07-03 23:33 1143我们知道普通的线性数据结构如链表,数组等,遍历方式单一 ... -
为什么单线程Redis性能也很出色
2019-01-21 18:02 2219高性能的服务器,不一 ... -
如何将编程语言里面的字符串转成数字?
2019-01-11 23:23 2106将字符串转成数字在很 ... -
为什么Java里面String类是不可变的
2019-01-06 18:36 1677在Java里面String类型是不可变对象,这一点毫无疑问,那 ... -
关于Java里面volatile关键字的重排序
2019-01-04 18:49 1079Java里面volatile关键字主 ... -
多个线程如何轮流打印ABC特定的次数?
2018-12-11 20:42 6058之前的一篇文章,我给 ... -
聊聊Java里面的引用传递
2018-11-16 21:21 991长久以来,在Java语言里面一直有一个争论,就是Java语言到 ... -
理解计数排序算法的原理和实现
2018-10-11 10:03 2096计数排序(Counting sort) ... -
理解Java7和8里面HashMap+ConcurrentHashMap的扩容策略
2018-09-06 11:31 3393### 前言 理解HashMap和Con ... -
关于Java里面多线程同步的一些知识
2018-07-18 09:45 1110# 关于Java里面多线程同步的一些知识 对于任何Java开 ... -
Java单例模式之双检锁深入思考
2018-07-08 12:25 3295# Java单例模式之双检锁 ... -
关于Java里面多线程同步的一些知识
2018-07-08 12:23 1122# 关于Java里面多线程同步的一些知识 对于任何Java开 ... -
重新认识同步与异步,阻塞和非阻塞的概念
2018-07-06 14:30 1474# 重新认识同步与异步 ... -
线程的基本知识总结
2018-06-27 16:27 1063### (一)创建线程的方式 (1)实现Runnable接口 ... -
Java里面volatile关键字修饰引用变量的陷阱
2018-06-25 11:42 1389# Java里面volatile关键字修饰引用变量的陷阱 如 ... -
关于Java里面的字符串拼接,你了解多少?
2018-06-25 11:28 1373# 关于Java里面的字符串 ... -
深入理解Java内存模型的语义
2018-06-25 11:39 744### 前言 Java内存模型( ... -
如何证明Java多线程中的成员变量数据是互不可见的
2018-06-21 10:09 1507前面的几篇文章主要介绍了Java的内存模型,进程和线程的定义, ...
相关推荐
Seer v1.4.0备份.zip 是一个包含Seer应用历史版本的压缩包,主要用于保存和恢复软件至特定版本。Seer是一款功能强大的工具,可能涉及到文件管理、数据查看或者系统监控等多个方面。在这个备份文件中,我们可以看到两...
seata1.4.0
标题中的"svn-1.4.0-setup.exe"是一个安装程序,它与Subversion(简称SVN)有关,这是一个广泛使用的版本控制系统。Subversion的主要功能是跟踪文件和目录的更改,便于多个人协同工作,同时保持项目历史的完整性。...
SpringBoot 是一个基于 Spring 框架的简化启动工具,它提供了自动配置、内嵌服务器、依赖管理和运行时指标等功能,使得开发 Java 应用程序变得更加便捷。而 Apache Shiro 是一个强大且易用的 Java 安全框架,处理...
这个1.4.0正式版是JavaMail API的一个稳定版本,它支持多种邮件传输协议,包括SMTP(简单邮件传输协议)、IMAP(因特网消息访问协议)以及POP3(邮局协议第3版)。这些协议是电子邮件系统的核心,允许用户发送、接收...
标题提及的" Dojo 1.4.0 beta2"是Dojo框架的一个早期版本,其包含了对框架的改进和新功能的引入。 在Dojo 1.4.0 beta2中,开发者可以期待以下关键知识点: 1. **Core**:这是Dojo的核心模块,提供了基础的...
`gtest1.4.0`是Google Test框架的一个版本,它是C++开发人员广泛使用的单元测试库。这个源代码包提供了全面的测试功能,帮助开发者确保他们的代码在各种情况下都能正常工作。以下是对`gtest1.4.0`源代码中的关键知识...
ZStack-CC2530-2.3.0-1.4.0是这个协议栈的一个特定版本,经过优化以适应CC2530的硬件特性,确保了在无线通信过程中的高效性和稳定性。 IAR 7.60是IAR Systems公司的嵌入式开发工具链IAR Embedded Workbench的一个...
picodevelopercenter PDC 1.4.0版本
你可以将项目文件保存在一个中央仓库中,每次修改都会被记录下来。这样,即使误删或误改,也可以随时恢复到之前的任何版本。 2. **分支与合并**:在1.4.0版本中,TortoiseSVN支持创建和管理分支。这使得开发团队...
《DownKyi-1.4.0.zip:一个聚焦Bilibili的下载工具解析》 在数字信息时代,网络资源的获取与分享变得尤为重要。DownKyi-1.4.0.zip是一个专为Bilibili平台设计的下载工具,它能够帮助用户方便地下载Bilibili上的视频...
JMeter Plugins Extras 1.4.0 是一个针对Apache JMeter的强大扩展,它为性能测试提供了更丰富的功能,尤其在服务器性能监控方面表现突出。JMeter本身是一款开源的、强大的性能测试工具,主要用于测试Web应用,而...
`mybatis-generator-1.4.0.rar` 是一个压缩包,包含了MBG的1.4.0版本及其相关的资源,包括可能的使用说明和运行所需的jar包。 **1. MyBatis Generator(MBG)简介** MyBatis Generator是MyBatis框架的一个插件,它...
2. 标准库增强:Kotlin 1.4.0引入了多个新的标准库函数,例如`Array`和`List`的扩展函数,以及更丰富的字符串处理功能,如`split`、`joinToString`等,为日常开发提供了更多便利。 3. 多平台支持:Kotlin 1.4.0加强...
"视频WEB插件-1.4.0"是一款专...综上所述,"视频WEB插件-1.4.0"是一个用于海康视频监控系统的浏览器扩展,它提供了实时视频预览和历史视频回放的便利,配合详尽的使用文档和演示,便于用户和管理员进行高效监控和管理。
赠送jar包:shiro-core-1.4.0.jar; 赠送原API文档:shiro-core-1.4.0-javadoc.jar; 赠送源代码:shiro-core-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-core-1.4.0.pom; 包含翻译后的API文档:shiro-core...
Appium for Windows 1.4.0 是一个专为Windows平台设计的移动自动化测试框架,它使得开发者和测试工程师能够方便地对iOS和Android应用程序进行自动化测试。Appium基于开源的Selenium WebDriver协议,允许使用多种编程...
基于 springboot+mybatis_+shiro + redis+activiti+quarts+quartz+vue 写的一个前后分离办公企业管理系统 ,通用服务端,用于学习。 使用技术 服务端: springboot(2.2.1) + mybatis-push + shiro(1.4.0) + redis +...
JSON.NET for Unity 1.4.0 是一个专门为Unity游戏引擎设计的强大的JSON序列化和反序列化库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输,因为其易于...
PyTorch 1.4.0 是一个广泛使用的深度学习框架,特别适合构建和训练神经网络。这个离线安装文件是专为Windows操作系统设计的,适用于那些无法或不便连接到互联网进行在线安装的用户。在没有网络的情况下,通过下载这...