1、dependency
scope: compile test provided runtime
exclusion:排除传递依赖
2、localRepository
repository id
server
distributionManagement
mirror
3、生命周期和plugin
三套生命周期 clean default site
pre-clean
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
default:
validate
initialize
generate-sources
process-sources
generate-resources
process-resources 复制并处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 复制并处理资源文件,至目标测试目录。
test-compile 编译测试源代码。
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
site生命周期:建立和发布项目站点,phase如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
Maven内置隐式变量
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
settings
settings变量暴露了Maven settings信息。可以使用点标记(.)的路径来引用settings.xml文件中元素的值。例如${settings.offline}会引用~/.m2/settings.xml文件中offline元素的值。
内置插件:
maven-resources-plugin maven-compiler-plugin maven-surefire-plugin maven-jar-plugin maven-install-plugin maven-deploy-plugin
4、每个plugin的goal需要与某个phase进行绑定,以便进行执行
5、配置参数 mvn install -Dmaven.test.skip = true
6、命令行格式
mvn [选项] [goals] [phases]
goal= groupid:artifactid:version:goal
7、插件仓库 pluginRepository
plugin 需要指定版本,避免自动使用最新版出现问题
8、parent pom module ../sub
Relativepath
继承groupid version
9、Mirror 可以把中央仓库的代理到本地仓库,
Cargo jetty等war测试工具
10、Resource插件用于替换文件中的占位符,
Profile体现不同的环境差异
-p指定profile
11、Checkstyle pmd cobertura changelog进行代码检查,
Project.build.sourceEncoding
12、Appfuse 项目模板
编写自己的archetype
常用插件source sql enforcer