当前位置: 首页 > 面试题库 >

Maven:不同配置文件的不同属性文件

方俊
2023-03-14
问题内容

我正在使用不同的Maven配置文件将我的应用程序部署到不同的环境。(使用weblogic-maven-plugin,但是我认为这并不重要)

在应用程序中,我使用Spring Web
Services。现在,我想根据环境更改端点。(端点在Spring的applicationContext.xml中定义)

我的想法是从属性文件中读取值。该属性文件将在Mavens软件包阶段写入(或复制)。

这是一个好主意吗?

如果是:如何使用maven创建此属性(或整个文件)。

如果否:解决此问题的更好方法是什么?


问题答案:

我实现了类似的操作,但是将变量pom.xml放在properties文件中。因此,我的属性文件中的变量将由Maven在包装中更改。

首先,我在pom的profiles部分中定义了这些var:

<profiles>
    <profile>
        <id>dev</id>
        <activation><activeByDefault>true</activeByDefault></activation>
        <properties>
            <props.debug>true</props.debug>
            <props.email>false</props.email>
                            <what.ever.you.want>value for dev profile</what.ever.you.want>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <props.debug>false</props.debug>
            <props.email>true</props.email>
            <what.ever.you.want>value for prod profile</what.ever.you.want>
        </properties>
    </profile>
</profiles>

然后激活行家对资源的处理和过滤。因此,在您的构建部分中:

        <build>
                    <resources>
        <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
        </resource>
    </resources>
             </build>

最后,我可以在属性文件,配置文件中包含“ vars”。例如,在我的项目中,我有一个email.properties用于配置电子邮件发送的文件。属性“
sendEmail”指示我是否必须发送电子邮件(产品配置文件)或在调试中将其打印(开发配置文件)。使用dev
profile时,此var将被设置为false,而使用prod profile时,该属性将具有真实值。

sendEmail=${props.email}

这不仅适用于属性文件,还适用于XML(我猜每个文本文件都适用)

缺点是:

  • 部分配置分散在pom文件中
  • Maven包装更持久(因为过滤)
  • 将vars放入XML文件会使它们在语法上错误(因为字符$)


 类似资料:
  • 问题内容: 在我的application.yml中,我得到了: 还有其他一些使用不同的配置文件。启动应用程序时,我得到以下信息: 如果我只是将log4j2.xml放在已分析的文件旁边,则它可以工作。所以我认为这是我错过依赖关系的原因,或者使用log4j2无法实现? 问题答案: 在我这边,我正在使用属性文件而不是Yaml文件。我需要两个日志文件:一个将所有内容记录到控制台,另一个用于记录文件。因此,

  • 我正在尝试将我的应用程序配置为具有两个构建配置文件:开发和生产。为此,我在src/main/resources文件夹下创建了两个子目录:src/main/resources/development和src/main/resources/production。每个子目录都有自己的。属性文件。 我使用命令mvn install-P${profile_here}构建应用程序 Maven将与所选配置文件相

  • 对于一些人来说,这可能是一个非常简单的问题,但就我个人而言,Log4j配置非常困难,学习执行脑部手术可能没有那么困难。 我正试图让多个日志记录者登录到不同的文件。这是我的log4j中的内容。属性文件: 这是我的(非常简单的)Java应用程序用于测试配置: 我有两个问题: 有一个问题,我总是在

  • 我有spring boot的申请。我需要将spring boot配置文件连接到maven配置文件,所以当我调用命令时 或 它应该调用spring boot加载application-dev.yml或application-prod.yml。当我打电话的时候 它应该在启动之前调用application-dev.yml文件。因此需要从2个命令调用spring boot开发配置文件。我有一个问题,每次我

  • Usng maven和Springboot。我希望每个环境(dev、cert)使用不同的文件配置(log4j2.xml、application.properties)。我在pom上创建了两个配置文件。xml文件,我还有两个文件夹,分别放在src/main/resources中,每个文件夹都有文件配置(dev和cert)。我想根据我使用的配置文件包括这些文件。我在目录中有其他文件,所以我不想使用这种

  • 问题内容: 对于不同的配置文件,maven pom.xml文件中是否可能具有一组不同的依赖关系? 例如 我想在一个配置文件中选择一个不同的依赖项jar文件,该文件具有相同的类名和相同接口的不同实现。 问题答案: 在此引用Maven文档: 配置文件元素既包含可选激活(配置文件触发器),又包含如果已激活POM则要对POM进行的一组更改。例如,为测试环境构建的项目可能指向与最终部署不同的数据库。或者可以