资源文件,最常见的 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.properties
跟 pom.xml
是 Maven 在打包的时候默认生成的,当然你可以创建你自己的打包清单。
但有时候,我们的资源文件没有全部放置的 src/main/resources
中,比如 Mybatis 的映射文件有时候会直接放置在相关的类包中,这时候打包就不会将这些映射文件打包进 jar 中,引用该 jar 的其他项目在使用相关的类就会报错。这时候我们就需要指定需要打包的资源文件。有以下几种方法
(1) <resources>
标签
<resources>
标签位于 <build>
标签内,用于指定项目资源文件的位置。例如,我们有一个 configuration.xml
文件,我们的