POM是项目对象模型(Project Obiect Model )的简称。
pom.xml主要描述了项目的maven坐标,该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。是项目级别的配置文件。
声明规范modelVersion4.0.0
packaging4.0.0
jar
namepom
descriptionblogserver
parent贝贝无敌帅!!!
properties(配置全局属性)org.springframework.boot spring-boot-starter-parent 1.5.9.RELEASE
UTF-8 UTF-8 1.8 5.0.2.RELEASE
eg:
org.springframework
spring-web
${spring.version}
dependencies
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 com.alibaba druid 1.0.29 junit junit 4.12 test
- groupld
org.sang
- artifactId
blogserver
- version
0.0.1-SNAPSHOT
- scope
scope主要是为了管理依赖的部署,确定依赖的使用范围。使用scope标签,可以很方便、直观的进行依赖的总体管理。
使用:
我们把.class文件叫做字节码文件,而.java文件叫做源码。
什么是编译:就是对源码进行翻译,翻译之后就变成了.class文件了。
什么是运行:编译好了之后,将.class文件装载到JVM上进行执行。
- compile(默认值)
缺省值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包时也要包含进去。eg:commons-fileupload - provided
该依赖在打包的时候可以不用包含进去,别的设施会提供。事实上该依赖理论上可以参与编译、测试、运行等周期。相当于compile,但是打包阶段做了exclude(排除)操作,eg:servlet-api、jsp-api - runtime
该依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段。 - test
该依赖仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,eg:上面的Junit。 - system
从参与度来说,和provided相同,但是它不会去maven仓库寻找依赖,而是在本地找,需要配合systemPath标签使用。
eg:
org.hamcrest hamcrest-core 1.5 system ${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar
- import
由maven 2.0.9新加入,只能在dependencyManagement中使用,相当于从其它pom文件中导入依赖设置。
打开父pom.xml修改打包方式jar为pom,注意:build内容也需要做替换,因为默认的spring-boot-maven-plugin这种方式,等到后期打包的时候它会一直提示你—你引入的依赖不存在!
${project.artifactId} org.apache.maven.plugins maven-resources-plugin 2.7 UTF-8 org.apache.maven.plugins maven-compiler-plugin 3.2 1.7 1.7 UTF-8 org.apache.tomcat.maven tomcat7-maven-plugin 2.2



