maven 使用profile却报异常找不到?

plugin 发布于 2016/05/11 22:38
阅读 293
收藏 0

我的配置文件里,*.properties , 定义的都是如下格式

jdbc.url = ${p.jdbc.url}

然后在具体的pom.xml 里<p.jdbc.url>具体的值</p.jdbc.url>


项目启动时,发现总报异常,说找不到${p.jdbc.url}

org.springframework.beans.factory.BeanDefinionStoreException:Invalid bean difinion with name '${p.jdbc.url}'  defined is null. could't not resolve placeholder.......


请问谁遇到过。

加载中
0
trayvon
trayvon

*.properties文件中应该是键值对的形式如:

jdbc.url=jdbc:mysql://127.0.0.1:3306/dbName?characterEncoding=utf8

如果要在pom.xml中使用可以:

<properties>
        <jdbc.url>jdbc.url=jdbc:mysql://127.0.0.1:3306/dbName?characterEncoding=utf8</jdbc.url>
 </properties>

xml标签本身是不支持替换的,如像<p.jdbc.url>具体的值</p.jdbc.url>

trayvon
trayvon
回复 @plugin : 字数有限制,你看一下下面一个吧。
plugin
plugin
回复 @trayvon : ${p.jdbc.url} 这个字符串应该是maven编译的时候被替换成了pom.xml 的profile里面定义的具体值。
trayvon
trayvon
回复 @plugin : properties中jdbc.url = ${p.jdbc.url} 是吧 ${p.jdbc.url} 当做字符串的,所以jdbc.url的只是 ${p.jdbc.url} 。
plugin
plugin
嗯。你说的这种形式我是用过的。 maven的profile你用过吗?
0
trayvon
trayvon

引用来自“trayvon”的评论

*.properties文件中应该是键值对的形式如:

jdbc.url=jdbc:mysql://127.0.0.1:3306/dbName?characterEncoding=utf8

如果要在pom.xml中使用可以:

<properties>
        <jdbc.url>jdbc.url=jdbc:mysql://127.0.0.1:3306/dbName?characterEncoding=utf8</jdbc.url>
 </properties>

xml标签本身是不支持替换的,如像<p.jdbc.url>具体的值</p.jdbc.url>

这是两个不同的地方,你配置profile中的是你执行mvn程序激活了相关的条件才解析的,它并不会替换你*.properties文件中的值。而*.properties文件中是你自己解析的,在这里可以看出是spring在解析。首先spring会把${p.jdbc.url}当做字符串,就算spring${p.jdbc.url}当做是占位符(placeholder),那么spring又在什么地方去找${p.jdbc.url}这个值呢?mvn只是构建工具,它的值并不会传递到你的应用中。
trayvon
trayvon
回复 @plugin : 我不是说这一个,我想问一下的是在maven profile中的设置的值,在你的应用中真的能读到?有成功过的例子吗?
plugin
plugin
回复 @trayvon : 你的方法是可以的,我用过,但是公司项目都是这样部署的。
trayvon
trayvon
回复 @plugin : 他也遇到了问题不是吗?他的问题也没有解决对吧。不管我说的对不对,也许你应该换一种思路尝试一下了,不要被现有的思路所局限,虽然坚持证明自己最初的想法是值得赞赏的,但并不一定都是有效的。
plugin
plugin
回复 @trayvon : 我觉得你说的不对。这里有个链接。他和我遇到了一样的问题 http://stackoverflow.com/questions/25473648/error-using-maven-profiles
trayvon
trayvon
回复 @plugin : 激活了也没有用啊,mvn的profile中的占位符是没有办法在你的应用中使用的,这是两个不同的应用。如果你只是想了解profile中配置激活的条件,可以搜一下maven profile activation
下一页
返回顶部
顶部