maven菜菜子教程
1.常用命令
- archetype
创建maven项目,根据模板生成项目骨架 - compile
编译,将main中的源代码编译成字节码,放在target/classes目录下 - clean
清理,删除target目录 - test
测试,执行测试类(使用junit),并生成测试报告 - package
打包,将java项目打包成jar包,web项目打包成war包,放在target目录下 - install
安装,将项目的jar包安装到本地仓库,供其它项目使用 - deploy
发布/安装,将项目的jar包安装到远程仓库,供其它项目使用,需要账号密码 - site
生成站点 生成关于项目介绍的网页
注意事项
- 所有的命令都要跟在mvn的后面,如mvn test
- 所有命令都必须在某个项目的根目录执行,与pom.xml平级
- 多个命令可以一起执行
2.生命周期
maven定义了**三套生命周期**:**clean default site**
其中default生命周期包含:**compile test package**
- 一个项目的构建的过程通常包括:清理、编译、测试、打包、集成测试、部署等
- 每个生命周期之间是相互独立的,每个生命周期又包含多个阶段,这些阶段又是有顺序的,后续的阶段必须等待前面的阶段执行后才能执行。
- 如:mvn clean package
(这个例子中,package是属于default的,而且package排在compile、test之后,所以不需要输入:mvn clean (default)compile test package,只需要输入clean package就可以了
3.在idea中使用maven
A. 配置maven
1,点击settings
2,输入maven,勾选import Maven projects automatically解决项目依赖问题
3,设置Maven_home目录
B. 创建maven项目
1,new 一个module
2,自定义maven,可以选择类型
3,设置groupId artifactId version
4,确认信息
5,成功创建
C. 执行maven操作
1,右侧打开管理窗口
2,选择要执行的操作,例如clean
3,在Command line输入要执行的命令 然后按Execute执行
4,成功执行maven操作
5.pom.xml
A.简介
- pom:project object model 项目对象模型
- pom.xml 是maven项目的核心配置文件
B.坐标
-
maven通过定义一个坐标,确定一个jar包
-
坐标包括:groupid,artifactid,version
-
dependency依赖,引入jar包:
1,通过访问https://repo1.maven.org/maven2/
查找需要的jar包(或者其他网站)坐标
2,填写以下代码块
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
3,等待一段时间(需要联网,会从中央仓库下载jar包)
C.scope作用域
scope表示依赖作用域,表示依赖中jar包可用的范围
- test 只在测试代码中使用, 例如: junit
- compile 在整个项目中使用,参与打包部署 例如:commons-fileupload
- provided 在编译、测试时需要,运行时不需要 例如:servlet-api(运行时使用tomcat,tomcat含有servlet-api.jar包)
- runtime 运行、测试时需要,编译时不需要 例如:jdbc,mysql
- system 使用本地系统路径下的jar包,通常是无法从中央仓库下载的jar包 例如:ojdbc.jar
D.properties、plugins
- properties全局属性,读作: [ˈprɑpərtiz],用来放置一些作用于全局的配置文件,例如:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
- plugins:插件,可以配置一些maven插件,tomcat插件等
6.maven特性
1.继承特性
继承方式:
1,在父项目的pom.xml加入:
<packaging>pom</packaging>
<name>parent</name>
<dependencyManagement>
<dependencies>
//插入依赖
</dependencies>
</dependencyManagement>
2,在子项目的pom.xml中插入以下代码
<parent>
<groupId>父项目groupId</groupId>
<artifactId>父项目的name</artifactId>
<version>父项目version</version>
<relativePath>父项目的相对路径</relativePath>
</partent>
子项目的dependency中不需要再定义version,只需要groupId和artifactId
2.聚合特性
1,在父项目中加入子项目的路径
<modules>
<module>...</module>
<module>...</module>
<module>.../module>
</modules>
2,运行父项目:mvn clean install
3,成功运行子项目们
3.依赖特性
依赖传递,比如使用spring的jar包,只需要定义springframework的坐标,而不需要把所有相关的依赖手动添加,会自动全部下载下来的
作用域:上文提到过,不赘述了