在 Spring Boot 中的 application.properties 中使用 Maven 属性

2024-01-03

我正在尝试将 pom.xml 中的属性加载到 application.properties 中。我想创建两个配置文件:dev 和 prod 以使用不同的数据库 url。我使用 Jenkins 作为 CI,在我的所有应用程序(主要是 Spring MVC,没有 Boot 项目)中都使用 Maven 配置文件部署到 Tomcat。有没有可能使用 Maven 属性来做到这一点? 我尝试过类似的事情:spring.datasource.url=${jdbc.url}


在执行此操作之前,请考虑将属性文件从可部署包中外部化。这样您就可以在每个环境上部署相同的编译。它将为您的 Jenkins 节省一些实际上不必要的工作。最佳实践是仅构建应用程序一次,但是,如果您不相信,请按以下步骤操作。

  1. In your pom.xml使用适当的属性值定义配置文件。

    <profile>
        <id>dev</id>
       <properties>
           <jdbc.url>your_dev_URL</jdbc.url>
       </properties>
    </profile>
    
  2. 设置Maven 资源插件 http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html过滤包含您的目录应用程序属性 file.

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
    
  3. 如果您使用 Spring Boot 1.3 或更高版本,您应该注意这样一个事实:为了避免 Spring Boot 占位符和 Maven 资源插件过滤的令牌之间发生冲突,框架引入了需要使用不同语法的解决方案 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering对于过滤值。

    现在,改为${property.key}你应该使用@property.key@。在这种情况下,您的应用程序属性必须包含以下示例才能按您的预期工作:

    [email protected] /cdn-cgi/l/email-protection@
    

您还可以查看有关的帖子为不同的 Maven 配置文件分隔 Spring 属性文件 http://dolszewski.com/spring/spring-boot-properties-per-maven-profile/。这样您就可以将 pom.xml 中的值外部化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spring Boot 中的 application.properties 中使用 Maven 属性 的相关文章

随机推荐

  • 从 C# Web 浏览器控件调用控件上的 Javascript 事件

    I am working on a web scraper in C where I have a web browser control that loads a web page I then collect data and depe
  • 使用 python panda 按月、年计算出现频率

    假设我有以下数据系列 Date Category 2014 8 Facebook 2014 8 Vimeo 2014 8 Facebook 2014 8 Facebook 2014 9 Facebook 2014 9 Orkut 2014
  • 在 PyQt5 中,我们如何获取焦点小部件的名称/对象名称?

    在我们的 PyQt5 程序中 我们多次使用 Qline Edits QcheckBox QListwidget 如何知道 我们的程序中使用的小部件有哪些小部件名称 如何获取 返回当前具有焦点的小部件的名称 用户指定的名称 正如 Heike所
  • 在 C++ 中将函数模板作为参数传递

    例如 我想从两个序列中获取最大值列表 left and right 并将结果保存在max seq 它们都是先前定义和分配的 std transform left begin left end right begin max seq begi
  • “py.test”与“pytest”命令

    The py test在我的例子中 命令失败了 而pytest运行完全正常 我使用 pytest flask 插件 platform linux Python 3 5 2 pytest 3 0 2 py 1 4 31 pluggy 0 3
  • JavaFX TableView 通过单击和自动插入行进行编辑?

    我在程序中使用了 tableview 来显示几行 这很好 我的程序用于会计 正如你所知 其中插入了大量数据 我使用了表视图 但我遇到了很多问题 问题 1 当用户想要修改值时 他将双击以编辑单元格 我希望我的用户选择任何行并开始输入 问题2
  • 如何检查MySQL中是否存在某行? (即检查 MySQL 中是否存在用户名或电子邮件)

    我需要帮助检查数据库中是否存在行 就我而言 该行包含一个电子邮件地址 我得到结果 email no longer exists email protected cdn cgi l email protection 这是我当前使用的代码 if
  • 如何在 iPhone 的 Objective-C 中本地播放视频?

    我想通过将视频存储在应用程序中来在 iPhone 上本地播放视频 我能怎么做 NSString path NSBundle mainBundle pathForResource myVideo ofType mp4 MPMoviePlaye
  • Cypress - 从 json 响应正文获取值

    我正在使用 Cypress 进行一些 API 测试 但我很难访问 JSON 响应正文中的值 但是我可以对身体进行断言 表明它正确接收了它 下面我尝试分配 JSON 主体 response body 然后从中获取 id 的值 describe
  • Excel 文件的 DictReader

    我有一个当前保存为 csv 的文件 但它最初是一个 Excel 文件 Excel 2010 其内容是这样的 Name Category Address McFood Fast Food Street 1 BurgerEmperor Fast
  • 限制网络请求

    我想执行一堆 WebRequest 但设置了可以同时启动的阈值 我遇到了这个LimitedConcurrencyTaskScheduler 示例 https msdn microsoft com en us library system t
  • WPF 数据网格文本省略号不起作用

    我有一个专栏 里面有很长的用户评论 我使用以下代码加载它
  • TabItem 绑定 WPF

    我刚刚学习 WPF 我需要一些帮助 我有一个使用 TabControl 并动态生成新选项卡的应用程序 在每个选项卡上我有一个 TextBox 现在我想向工具栏添加一个撤消按钮 该工具栏不是选项卡的一部分 类似 VisualStudio 撤消
  • 在 Groovy 中将地图与递归嵌套地图合并

    我想知道是否有人有一种简单的方法将 2 个深层嵌套地图合并在一起 例如 我想得到 a 1 animals cat blue b 2 animals dog red a 1 b 2 animals cat blue dog red 有人有简单
  • 合并重叠的数字范围

    我需要将重叠的数字范围合并为单个范围 所以我有一个包含子列表的列表 例如 83 77 103 97 82 76 101 95 78 72 97 91 72 66 89 83 63 57 78 72 53 47 65 59 41 35 50
  • Cipher 是线程安全的吗?

    很简单 一个实例可以javax crypto Cipher e g Cipher getInstance RSA 可以从多个线程中使用 或者我是否需要将多个线程粘在一个线程中ThreadLocal 就我而言 不 不是 该实例是有状态的 因此
  • 用于二维数组的 ASP.NET MVC 5 编辑器

    我有一个包含二维数组的模型 public class Matrix public ValidInt Data Range 0 8 ErrorMessage public int Width get set Range 0 8 ErrorMe
  • 宏操作符列表

    我知道宏的字符串化运算符 并且我最近了解到 连接运算符 带有字符串文字前缀的预处理器字符串化运算符 https stackoverflow com questions 29850088 preprocessor stringizing op
  • 我可以在垫子扩展行内显示另一个表格吗?

    我有一张带扩展行的垫子桌 如果我单击一行 它会展开并显示硬编码字符串 我想在展开的行内显示另一个表格 是否可以 或者 是否有任何其他技术或方法来实现我想要做的事情 我正在尝试显示给定时间段内已执行作业的列表 在主行上 我只想显示类似 01
  • 在 Spring Boot 中的 application.properties 中使用 Maven 属性

    我正在尝试将 pom xml 中的属性加载到 application properties 中 我想创建两个配置文件 dev 和 prod 以使用不同的数据库 url 我使用 Jenkins 作为 CI 在我的所有应用程序 主要是 Spri