1.自动构建工具:make->ant->maven->gradle
2.maven作用:管理依赖、自动构建
3.自动构建流程:
》清理 mvn clean
》编译 mvn compile
》测试 mvn test-compile/compiler
》报告
》打包 (jar/war包)mvn package
》安装(安装到maven仓库)mvn install
》部署 mvn deploy(部署到服务器或者将工程上传到中央仓库)
4.maven安装:
》jdk安装,配置%JAVA_HOME%
》下载解压maven,文件名不能有空格
》配置maven:%M2_PATH%或%MAVEN_PATH%、执行path路径
》测试安装mvn -v
5.仓库配置:/conf/settings.xml
本地仓库:<localRepository>
本地仓库:
》私服(Nexus):局域网仓库
》中央仓库
》中央仓库镜像
仓库保存的内容:
》maven自身需要的插件
》第三方框架或jar包
》自己开发的maven工程
6.Maven约定的目录结构:(可以通过配置改变约定 约定》配置》编码)
Hello
|---src
|---|---main
|---|---|---java
|---|---|---resources(存放框架或其他工具的配置文件)
|---|---test
|---|---|---java
|---|---|---resources
|---pom.xml
7.POM(project object model项目对象模型)文件结构:
》POM.xml打包以后变成xxx.pom
8.坐标:
》groupid:组织+包名
》artifactid 模块名
》version 版本号
》scope 依赖范围 compile参与打包 test provided(不参与部署-运行,例如serveletAPI,服务器本身提供)不参与打包
》exlusions--exlusion 清除传递的依赖
》properties 设置变量,例如统一的版本号 ${变量名}
》parent 继承父pom (建议加上relativePath)
》dependencyManager 子模块公共依赖
》modules 聚合工程,一键build,不配置的时候先build父工程,后build子工程
例如:
groupid:com.mmosir.test
artifactid:spring
version:1.0.0
最终转化为:com/mmosir/test/spring/1.0.0/spring-1.0.0.jar
9.依赖 dependencies
10.生命周期/插件/目标
》clean生命周期
》default 生命周期
》site 生命周期 mvn site
11.继承 parent
12.聚合 execusions
13.maven核心程序中只定义了抽象的生命周期,具体的工作需要下载插件来完成;maven先到本地仓库
【系统中当前用户的家目录/.M2/repository/】查找插件,然后到中央仓库下载;
14.eclipse集成:
》设置installtions:指定maven
》设置useSettings
15.注意事项:
》就近依赖
16.phase和goal
》生命周期里的每一个phase是抽象接口,需要在execusions中指定每个phase的goal
17.自定义maven插件:
》创建maven工程,需要将packging标签内容设置为maven-plugin,并添加plugin-api依赖
》创建mojo,继承abstractMojo,实现execute方法
@Mojo(name = "lc", defaultPhase = LifecyclePhase.VERIFY)
@Parameter(defaultValue = "${project.basedir}", readonly = true)
》单独执行插件mvn <groupId>:<artifactId>:<version>:<goal>或绑定到phase