Maven学习笔记(十二) | 您所在的位置:网站首页 › pom打包完生成什么 › Maven学习笔记(十二) |
一、简介
构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。 ● src/main/java和src/test/java这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。 ● src/main/resouces和src/test/resources 这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。 ● target/classes打包插件默认会把这个目录中的所有内容打入到jar包或者war包中。
如下所示:
二、Maven项目的标准目录结构 src main java 源文件 resources 资源文件filters 资源过滤文件config 配置文件scripts 脚本文件webapp web应用文件 test java 测试源文件resources 测试资源文件filters 测试资源过滤文件 it 集成测试assembly assembly descriptorssite Site target generated-sourcesclassesgenerated-test-sourcestest-classesxxx.jar pom.xmlLICENSE.txtNOTICE.txtREADME.txt 三、打包时资源文件的配置
3.1、打包src/main/java目录下的xml
一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。 有时候,比如mybatis的mapper.xml文件,我们习惯把它和Mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)
下面通过一个简单的示例来说明:
项目结构如下所示,有两个UserMaper.xml文件,所在目录不同
默认情况下,在POM.XML目录下执行: mvn clean package 打包命令在target\classes目录下不会把UserMapper.xml打包到下mapper目录下
而resources目录下的文件始终都会打包进jar包或war包
这个时候使用mybatis就会出一些问题,找不到UserMapper所对应的xml文件解决方法有如下几种:
(1)配置POM.XML的resource把xml也打包到mapper目录下 src/main/java **/*.xml **/*.yaml true 其中**/*这样的写法,是为了保证各级子目录下的资源文件被打包。resources是可以看做是容器,这个容器里面可以放很多个像resource这样的配置。而directory就是配置文件所在的路径,includes从英文单词角度看,就是包含的意思,此时在执行命令,就会把xml也打包到mapper目录下了
Resources官方文档地址为:http://maven.apache.org/pom.html#Resources
(2)maven-resources-plugin插件
为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。 默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin来实现。 maven-resources-plugin 2.5 copy-xmls process-sources copy-resources ${basedir}/target/classes ${basedir}/src/main/java **/*.xml此外,资源文件过滤也是Maven的一大特性,你可以在资源文件中使用${propertyName}形式的Maven属性,然后配置maven-resources-plugin开启对资源文件的过滤,之后就可以针对不同环境通过命令行或者Profile传入属性的值,以实现更为灵活的构建。 org.apache.maven.plugins maven-resources-plugin UTF-8 pem pfx p12 (3)build-helper-maven-plugin插件 org.codehaus.mojo build-helper-maven-plugin 1.8 add-resource generate-resources add-resource src/main/java **/*.xml 3.2、src/main/resources目录下的xml等资源文件不被打包
默认resources目录下的文件都会被打包,如果想resources目录下的xml文件不被打包,可通过如下配置: src/main/resources *.properties *.xml *.yaml 编译之后如下:
当然也可以通过插件来实现 maven-resources-plugin copy-resources validate copy-resources ${project.build.directory}/conf src/main/resources **/*.xml true 实现的效果如下:
编译好之后,会在target目录下生成conf目录并且把resources目录下的所有文件都自动拷贝到target/conf/目录下
参考: https://www.cnblogs.com/pixy/p/4798089.html |
CopyRight 2018-2019 实验室设备网 版权所有 |