maven默认filter目录的好处
最近我发现了maven资源过滤,并在文档中看到了一个注释:
标准目录布局
src / main / filters资源filter文件
我注意到maven默认情况下不搜索此目录中标签中声明的文件。 那么在这种情况下坚持使用Maven布局有什么好处(除了结构均匀性)?
基本上你假设src / main / filters (或src / test / filters )中存在的文件本身是可过滤的。 这个假设是不正确的。
src / main / filters文件夹的目的是包含Maven在过滤操作期间将使用的资源filter文件。
例如,假设您定义了以下属性:
... foo ...
现在想象你正在过滤一些文件夹:
... src/main/resources true ...
根据该定义,包含$ {my.property}的 src / main / resources中的任何文件都将被foo替换。
现在想象一下,每次要添加新属性时都不想更改POM。
然后是src / main / filters开始运作的时候。 您可以使用属性在src / main / filters下创建一个文件,而不是将属性放在POM中,并在POM中添加一个filter:
... Some Project ... ... my-filter.properties ... ...
主要的好处是,当有人去寻找filter时,他们会查看src/main/filters
,如果他们没有看到src/main/filters
他们通常很快就会认为你没有任何filter。
正如其他人也提到的那样,你只将filter放在src/main/filters
它不是你放置需要过滤的东西的地方。
src/main/filters
目录包含filter而不是要过滤的文件。 Maven无法自动搜索filter,因为它无法知道要使用哪些filter。
见Maven:完整参考 :
src / main / filters中的default.properties。
jdbc.url=jdbc:hsqldb:mem:mydb jdbc.username=sa jdbc.password=
要使用此default.properties文件配置资源过滤,我们需要在项目的POM中指定两项内容:构建配置的
filters
元素中的属性文件列表,以及要过滤资源目录的Maven标志。 默认的Maven行为是跳过过滤,只是将资源复制到输出目录; 您需要显式配置资源filter,否则Maven将完全跳过该步骤。 此默认设置可确保Maven的资源过滤function不会让您感到惊讶并破坏您不希望它替换的任何$ {…}引用。过滤资源(替换属性)。
src/main/filters/default.properties src/main/resources true