一、基本配置
name、description、url是工程描述性信息,非必要的,pom示例:pomdemo.xml
二、设置项目编码(windows默认GBK)
UTF-8
UTF-8
三、指定jdk版本
修改plugin配置:
org.apache.maven.plugins
maven-compiler-plugin
3.6.2
1.7
1.7
或修改settings文件:
jdk-1.8
true
1.8
1.8
1.8
1.8
或修改pom文件:
1.8
1.8
maven-compiler-plugin配置:fork和executable用于使用外部编译器,默认使用内置编译器,skip禁止编译测试代码;
eclipse中update project影响:会设置JRE System Library到对应版本的Excution environment;
优先级:plugin配置(推荐) > settings配置 > pom配置;
四、dependency的scope字段含义
compile,缺省值,用于所有阶段,随着项目一起发布,并且依赖传递。
provided,类似compile,但运行时由jdk或者容器提供依赖,如servlet.jar,依赖不传递。
runtime,用于运行和测试阶段,如JDBC驱动,并且依赖传递。
test,只用于编译和运行测试代码,不随项目发布,且依赖不传递。
system,类似provided,需要显式提供依赖的文件,maven不会在仓库中查找它。
optional=true,表示依赖不随项目发布,且依赖不传递。
五、maven依赖本地库
scope值必须为system,然后要引入systemPath字段。
com.sun.jmdk
jmxtools
1.2.1
system
${project.basedir}/lib/jmxtools.jar
六、打jar包排除文件
org.apache.maven.plugins
maven-jar-plugin
3.1.0
*properties*
注意:mvn sprint-boot:run运行应用并没有用jar包,所以spring-boot:run和eclipse直接run效果一样。
七、配置manifest
addClasspath:是否增加依赖jar包到classpath;
classpathPrefix:增加依赖的通用前缀;
mainClass:设置主类;
manifestEntries:增加特殊key-value,本例修改classpath,增加的classpath放在依赖jar包后面;
org.apache.maven.plugins
maven-jar-plugin
3.1.0
true
../lib
mina.MinaDemo
.
八、拷贝所有依赖jar包
phase,哪个阶段执行拷贝动作;
outputDirectory,拷贝到哪个目录;
org.apache.maven.plugins
maven-dependency-plugin
2.10
copy
prepare-package
copy-dependencies
system
lib
九、发布打包
org.apache.maven.plugins
maven-assembly-plugin
logdemo.LogDemo
jar-with-dependencies
make-assembly
package
single
十、maven变量
内置变量:
project.basedir,工程目录;
maven.build.timestamp,项目开始构建时间;
project.element,project下面元素element的值,如project.name;
定义属性,优先级是-D定义属性 > pom中profile定义属性 > pom定义属性:
feinenxiang