账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于maven resource plugin中的filter的理解
    63
    0

    我的pom文件中,配置如下

    <profiles>
        <profile>
            <id>office</id>
            <properties>
                <profileActive>office</profileActive>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        ...
    </profiles>
    
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>application.properties</exclude>
                    <exclude>application-home.properties</exclude>
                    <exclude>application-office.properties</exclude>
                    <exclude>application-prod.properties</exclude>
                </excludes>
            </resource>
    
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>application.properties</include>
                    <include>application-${profileActive}.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
    

    我的理解是,上述配置会让target打包的结果资源文件中包含两个文件,一个是application.properties,一个是application-${profileActive}.properties,这里因为active profile是prod,所以就是application-prod.properties。上述配置是先将所有的application.properties文件排除exclude出打包结果,然后再include加进来两个application.properties文件。

    但是看了一些文章,好像这个filter是对文件的内容中的键值对进行替换,而不是打包包不包含哪个资源文件。这和我上面的理解不一致,但是我的理解却符合结果。这是怎么回事?

    而且奇怪的是,第二个filtering是false的时候,application-${profileActive}.properties的值运行时不能覆盖掉application.properties里的值,而true的时候,运行时能。 不过打包结果中application.properties文件本身并没变化。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部