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

发布于 2021-01-30 17:28:37

有点卡在这里。我有一个带有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
关注者
0
被浏览
89
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    您需要做的是<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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看