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

如何将Maven配置文件值注入属性文件

邹誉
2023-03-14
问题内容

有点卡在这里。我有一个带有3个配置文件的pom。Theese配置文件具有不同的版本名称。我要在构建特定配置文件时将该版本名称注入属性文件。

我的个人资料:

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>DEV</projectVersion>
        </properties>
    </profile>

    <profile>
        <id>test</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>1.0.0-RC1</projectVersion>
        </properties>
    </profile>

    <profile>
        <id>prod</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>1.0.0-Final</projectVersion>
        </properties>
    </profile>
</profiles>

和filter.properties看起来像这样:

projectName = defaultName
versionName = defaultVersion

怎么做?我通过命令构建项目:

mvn clean install -D profile_name

问题答案:

您需要做的是<build>在POM文件的部分中添加一个新部分。

像这样:

<build>
    <resources>
        <resource>
            <filtering>true</filtering>
            <includes>
                <include>**/*.properties</include>
            </includes>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

这将在指定文件的指定文件夹(src/main/resources)内部查找,**/*.properties并在遇到定义的变量时更改文件。

因此,为了进行这项工作,您的属性文件必须采用以下方式:

projectName = ${defaultName}
versionName = ${defaultVersion}

请注意这些变量的名称。Maven将用您定义的名称替换它,或者Maven结构的名称(例如$
{projectVersion})将被<version>1.0</version>pom文件的标记替换。

因此,不要使用:

<properties>
     <projectVersion>1.0.0-Final</projectVersion>
</properties>

将此变量的名称(和版本)更改为其他形式:

<properties>
     <defaultVersion>1.0.0-Final</defaultVersion>
     <defaultName>someName</defaultName>
</properties>

在您的所有个人资料上。

只需将您的maven命令运行为:

mvn install -Pprofilename


 类似资料:
  • 我有主pom。xml我喜欢从我正在使用的主mvn命令行cli更改,并更改: 参数仅在子模块中:module_y配置文件不module_x 这是我现在执行的命令: mvn清洁安装-Ddocker_build=构建 这是module_xmodule_y 简而言之,如何从主mvn运行中仅更改概要文件docker_内置模块_y中的属性值${docker.image}?

  • 问题内容: 我正在使用不同的Maven配置文件将我的应用程序部署到不同的环境。(使用weblogic-maven-plugin,但是我认为这并不重要) 在应用程序中,我使用Spring Web Services。现在,我想根据环境更改端点。(端点在Spring的applicationContext.xml中定义) 我的想法是从属性文件中读取值。该属性文件将在Mavens软件包阶段写入(或复制)。

  • 在我的Spring Boot Application中,我用一个调用存储过程的方法实现了以下类。 由于调用存储过程需要数据库连接,所以我需要从应用程序加载这些相应的属性值。特性: 基于以下关于类似问题的文章,Spring boot—应用程序中的自定义变量。属性,并在您自己的类和Spring Boot@ConfigurationProperties示例中使用Spring Boot配置属性,我为我的类

  • 问题内容: 我正在将 FILEPATH 参数写入属性文件,如下所示。 文件 路径 为 D:\ filelog.txt 写入时,控制台打印如下。 但是当我打开属性文件时,内容就像.. 有人建议我,我在这里真正在想什么..? 问题答案: 只是打电话。您将看到像输入一样返回“ D:\ filelog.txt”。

  • 我想在maven构建期间更改不同属性的值。Maven根据配置文件更改文件中的值,我也尝试了很多其他方法,但它从来都不起作用,我不明白为什么... 这是我的pom.xml 我有一个基于maven的项目,下面是src/main/resources下名为front-config.properties的文件:

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但是我不清楚我如何从中访问我感兴趣的财产? 问题答案: 你可以在Spring 3中使用EL支持进行此操作