MAVEN中filtering的作用是什么?

FILTERING的作用

MAVEN提供了一种过滤机制,这种机制能够在资源文件被复制到目标目录的同时,当filtering = true时替换资源文件中的占位符;当filtering = false时不进行占位符的替换。

写在前面

如下所示filtering的用法,它对资源目录开启了filtering过滤,那么它的作用是什么呢?

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

<!-- 上面的配置,解释如下:-->
<!--"src/main/java"目录下的所有的.properties和.xml文件进行打包,
	并替换所有的.properties和.xml文件中的占位符。 
-->

场景演示

① 配置如下:

将"src/main/java"目录下的所有的.txt文件进行打包,并替换所有的.txt文件中的占位符。

在这里插入图片描述

② 打包后的文件和预期一样,描述如下:

A. "src/main/java"下的**/*.txt文件已被打包;
B. .txt文件中的${name}占位符已被替换。

在这里插入图片描述

### Maven 中修改 Profiles 后需要执行的操作 在 Maven 项目中,Profiles 是一种用于管理不同环境配置的方式。当修改了 Profiles 或者切换到不同的 Profile 配置时,通常需要重新加载项目的配置并确保其正确应用。以下是具体的操作和命令: #### 1. 清理之前的构建产物 为了防止旧的构建产物影响新的构建过程,建议先清理之前生成的目标文件夹以及编译后的类文件。 ```bash mvn clean ``` 这条命令会删除 `target` 文件夹下的所有内容,从而清除掉任何可能残留的旧数据[^1]。 #### 2. 使用指定的 Profile 构建项目 通过 `-P` 参数可以显式地告诉 Maven 当前要使用的 Profile 名称。例如,假设有一个名为 `prod` 的生产环境 Profile,则可以通过如下方式启动该特定 Profile 下的任务: ```bash mvn package -Pprod ``` 这里指定了 `package` 生命周期阶段,并且选择了名称为 `prod` 的 profile 来完成打包工作[^2]。 #### 3. 更新本地仓库中的依赖项 (如有必要) 如果更改了某些依赖关系或者引入新库等情况发生,在实际运行上述指令之前最好确认这些改动已被同步至本地存储库之中。这可通过下面语句实现: ```bash mvn dependency:resolve -U ``` 其中参数 `-U` 表示强制更新快照版本(SNAPSHOT),即使它们已经被缓存过了也会再次尝试获取最新版;而目标 `dependency:resolve` 则负责解析当前工程所需的所有外部模块及其子集等信息[^4]。 #### 4. 如果涉及资源过滤则需额外处理 有时候我们需要根据不同环境替换模板里的占位符变量值(比如数据库连接字符串之类的东西)。这种情况下除了正常流程外还需要特别关注如何让自定义设置生效。此时可借助插件如 maven-resources-plugin 完成任务, 并确保 plugin configuration 正确指向对应目录路径及模式匹配规则等等[^3]: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> ``` 以上 XML 片段展示了怎样开启 filter 功能使得 properties 文件能够被动态注入相应 key-value 对应的实际数值进去。 --- ### 总结 综上所述,每当调整过 Maven Project 的 profiles 设置之后,应该按照顺序依次采取行动:首先是彻底清扫遗留物(`clean`);接着依据需求挑选合适的 phase 和 active-profiles 组合起来调用(`package`, `install` etc.);再视具体情况决定要不要刷新远程 artifact 缓存状态(-U选项配合 resolve);最后别忘了核查那些受控于 profile-switch 影响较大的部分诸如 resource-transformations 是否按预期运作良好. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值