Maven Resources插件中 Filter用处
查看官网的例子,pom中resources可以用 ${variables}来引用变量。
例子:http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
现在我们创建一个maven project,试验一下。
首先,我们在src/main/resources/下创建一个hello.txt
1. 在pom文件中加入resources插件。
<directory>标签指定了项目中要处理的目录。maven打包时会扫描这个目录。
<project> ... <name>SSH Demo Project Project</name> ... <build> ... <resources> <resource> <directory>src/main/resources</directory> </resource> ... </resources> ... </build> ... </project>
运行一下maven install后,在target/classes目录下出现了hello.txt
打开后发现,hello.txt的内容还是${name},和resources目录下的hello.txt内容一致。
2. 修改pom文件,在<directory>下加上一<filter>标签。
<resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource>
运行 maven clean,再次maven install.
这时查看target/classes目录下的hello.txt,内容变成了
当然,再次install没有什么必要,因为只有改了资源文件,所以也可以在命令行中直接运行以下命令
mvn resources:resources
3. 还可以在maven命令行运行,用 "-D" option直接更改变量名。
mvn resources:resources -Dname="world"
运行cmd,切换到project的pom文件所在目录,运行上述maven命令。
查看target\classes下面的hello.txt
顺利更改!
4. 在src/main/resources/新建一个world.txt文件,在pom文件中加上<include>标签,
<resources>
<resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>hello.txt</include> </includes> </resource> </resources>
运行
mvn resources:resources
target下面只有一个hello.txt文件
而且,hello.txt进行了过滤filter,进行了变量替换。
5. 再次pom添加<resources>
<resources>
<resource>
<directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>hello.txt</include> </includes> </resource> <!-- Include other files as resources files. --> <resource> <directory>src/main/resources</directory>
<filtering>false</filtering> <excludes> <exclude>world.txt</exclude> </excludes> </resource> </resources>
运行mvn resources:resources
在target下面只有hello.txt文件。
6. 修改pom文件
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>hello.txt</include> </includes> </resource> <!-- Include other files as resources files. --> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <excludes> <exclude>hello.txt</exclude> </excludes> </resource> </resources>
运行mvn resources:resources
在target下面只有hello.txt和world.txt两个文件。
其中,world.txt保持原样,里面的${name}没有被替换掉。
而hello.txt被过滤,内容为
Hello SSH Demo Project