gpt4 book ai didi

spring - 在 Spring 上下文中使用 Maven settings.xml 属性

转载 作者:行者123 更新时间:2023-12-04 12:42:34 25 4
gpt4 key购买 nike

我有一个 Maven settings.xml文件在我的 ~/.m2目录;它看起来像这样:

<settings>
<profiles>
<profile>
<id>mike</id>
<properties>
<db.driver>org.postgresql.Driver</db.driver>
<db.type>postgresql</db.type>
<db.host>localhost</db.host>
<db.port>5432</db.port>
<db.url>jdbc:${db.type}://${db.host}:${db.port}/dbname</db.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>mike</activeProfile>
</activeProfiles>
<servers>
<server>
<id>server_id</id>
<username>mike</username>
<password>{some_encrypted_password}</password>
</server>
</servers>
</settings>

我想两次使用这些属性
  • 一旦进入Maven的integration-test阶段来建立和拆除我的数据库。使用 Maven 过滤,这是完美的工作。
  • 第二次运行我的 Spring 应用程序时,这意味着我需要将这些属性替换到我的 servlet-context.xml 中。 Maven 期间的文件 resources:resources阶段。对于 settings.xml 上部的属性,例如 ${db.url} ,这很好用。 我不知道如何将我的数据库用户名和(解密的)密码替换为 Spring servlet-context.xml文件。

  • 我的相关部分 servlet-context.xml文件看起来像:
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName"><value>${db.driver}</value></property>
    <property name="url"><value>${db.url}</value></property>
    <property name="username"><value>${username}</value></property>
    <property name="password"><value>${password}</value></property>
    </bean>

    这里的最终目标是让每个开发人员拥有自己的 Maven 设置(以及他们自己机器上用于集成测试的数据库)......以及 Jenkins 服务器上的类似设置。我们不想共享一个通用的用户名/密码/等。

    最佳答案

    有一种方法可以通过配置 Maven War Plugin 来过滤 Web 资源。看 this来自官方插件文档的片段。

    顺便说一句,我强烈建议重新考虑这种基于过滤的方式,以便在构建时提供事实上的运行时配置。请注意,您必须重建相同的代码 只是为另一个环境准备包(或编辑包内容)。您可以为此使用应用程序服务器的特定内容(至少 JBoss 有)或使用 Spring AFAIR 也可以这样配置。

    关于spring - 在 Spring 上下文中使用 Maven settings.xml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730755/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com