在Spring配置文件中访问maven项目版本
我想在页面中显示我的网络应用程序当前运行的版本。该项目基于 Maven、Spring 和 Wicket。
我想以某种方式获取 maven 的 ${project.version}
的值并在我的 spring XML 文件中使用它,类似于我使用 Spring PropertyPlaceholderConfigurer 读取属性文件以进行设置的方式我在我的应用程序中使用。
如果我在 Spring 配置中将 maven project.version
作为变量使用,我可以做这样的事情:
<bean id="applicationBean" class="com.mysite.web.WicketApplication">
<property name="version"><value>${project.version}</value></property>
</bean>
我怎样才能做到这一点?
I would like to display the currently running version of my web application in the page. The project is based on Maven, Spring, and Wicket.
I'd like to somehow get the value of maven's ${project.version}
and use it in my spring XML files, similarly to the way I use the Spring PropertyPlaceholderConfigurer to read a property file for settings that I use in my application.
If I had the maven project.version
available as a variable in my Spring config, I could do something like this:
<bean id="applicationBean" class="com.mysite.web.WicketApplication">
<property name="version"><value>${project.version}</value></property>
</bean>
How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以按照已经建议的方式使用 Maven 过滤。
或者您可以直接使用 Spring: 读取 Maven 在 META-INF 目录下创建的
pom.properties
文件并使用该 bean。
后一种方法的唯一缺点是
pom.properties
是在package
阶段创建的(并且在test
期间不会存在)代码>)。You can use Maven filtering as already suggested.
Or you could just read the
pom.properties
file created by Maven under META-INF directory directly with Spring:and use the bean.
The only drawback of the later approach is that the
pom.properties
is created atpackage
phase time (and won't be there during, say,test
).一种技术是使用专家过滤。您可以在资源文件中插入占位符,然后在资源阶段将其替换为构建中的值。
查找“如何过滤资源文件?”在 Maven 入门指南
One technique would be to use mavens filtering. You can insert placeholders in resource files like which then get replaced with values from the build during the resource phase.
Look up "How do I filter resource files?" in the Maven getting started guide
使用@PropertySource注解将Maven创建的pom.properties文件添加到META-INF目录下。请注意,该文件直到打包阶段才存在。为了避免测试期间出现错误,请设置ignoreResourceNotFound=true,并在正在读取的属性上添加默认值(例如下面的none)。
Use the @PropertySource annotation to add the pom.properties file created by Maven in the META-INF directory. Note that the file doesn't exist until the package phase. To avoid errors during testing set the ignoreResourceNotFound=true and add a default value on the property being read (e.g. none below).
我们在 Web 应用程序之外部署属性文件。然后可以在部署时过滤这些文件。
如果使用 Jetty,可以将该文件放在 $JETTY_HOME/resources 下,或者使用 extraClassPath 功能在运行时加载属性文件。
We deploy property files outside of the web app. The files can then be filtered at deployment time.
If using Jetty one can put the file under $JETTY_HOME/resources or use the extraClassPath feature to load the property file at runtime.
我认为收集应用程序版本的正确方法是此线程中解释的方法: https://stackoverflow.com/a/2713013/840635 通过
getClass().getPackage().getImplementationVersion()
。I think the right way of gather application version is the one explained in this thread: https://stackoverflow.com/a/2713013/840635 through
getClass().getPackage().getImplementationVersion()
.