Maven 资源文件(Resources)的打包(package)与过滤(filter)

资源文件,最常见的 XML 、Properties 配置文件,比如使用 Mybatis 时的 Mapper,Spring 的 ApplicationContext 配置。

打包(package)

根据 Maven 的默认项目结构,资源文件放置在 src/main/resources 中,测试的资源文件在 src/test/resources 中。放置在 src/main/resources 中的资源文件默认会被打包进 jar 中。
例如我们有如下的目录结构,其中在 src/main/resources 中有一个资源文件 application.properties 在 META-INF

my-app
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |   `-- com
    |   |       `-- mycompany
    |   |           `-- app
    |   |               `-- App.java
    |   `-- resources
    |       `-- META-INF
    |           `-- application.properties
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

我们将上面的项目进行打包,然后将 jar 解压之后我们可以看到如下的目录

|-- META-INF
|   |-- MANIFEST.MF
|   |-- application.properties
|   `-- maven
|       `-- com.mycompany.app
|           `-- my-app
|               |-- pom.properties
|               `-- pom.xml
`-- com
    `-- mycompany
        `-- app
            `-- App.class

如上所示,我们可以发现项目中的 src/main/resources 目录中的文件会被打包在项目根目录中。这里多出来的 pom.propertiespom.xml 是 Maven 在打包的时候默认生成的,当然你可以创建你自己的打包清单。

但有时候,我们的资源文件没有全部放置的 src/main/resources 中,比如 Mybatis 的映射文件有时候会直接放置在相关的类包中,这时候打包就不会将这些映射文件打包进 jar 中,引用该 jar 的其他项目在使用相关的类就会报错。这时候我们就需要指定需要打包的资源文件。有以下几种方法

(1) <resources> 标签

<resources> 标签位于 <build> 标签内,用于指定项目资源文件的位置。例如,我们有一个 configuration.xml 文件,我们的

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Maven过滤机制和正则表达式可以用于在构建过程中动态地替换配置文件中的变量。下面是使用Maven过滤机制和正则表达式的一般步骤: 1. 在pom.xml文件中,添加以下配置,启用过滤机制: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> ``` 这样,Maven会自动将src/main/resources目录下的源文件进行过滤。 2. 在您的配置文件中,使用`${variable}`的形式来表示需要替换的变量。例如,假设您的配置文件是config.properties,其中有一个变量需要替换: ``` db.url=${database.url} ``` 3. 在pom.xml文件中,定义变量的值。可以在`<properties>`标签中定义变量,并给定相应的值。例如: ```xml <properties> <database.url>jdbc:mysql://localhost:3306/mydb</database.url> </properties> ``` 在这个例子中,`${database.url}`会被替换为`jdbc:mysql://localhost:3306/mydb`。 4. 运行Maven构建命令(如`mvn package`),Maven会在构建过程中自动将配置文件中的变量替换为定义的值。 注意:Maven使用的是Ant风格的过滤机制,默认使用`@`作为变量前缀和后缀。如果您想自定义变量前缀和后缀,可以在pom.xml文件中添加以下配置: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/*.properties</include> </includes> <excludes> <exclude>**/*.xml</exclude> </excludes> </resource> </resources> <filters> <filter>src/main/filters/filter.properties</filter> </filters> </build> ``` 在上述配置中,`<filter>src/main/filters/filter.properties</filter>`指定了自定义的过滤器文件,您可以在该文件中定义变量前缀和后缀。 这就是使用Maven过滤机制和正则表达式来替换配置文件中的变量的基本步骤。希望对您有所帮助!如果您还有其他问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值