maven 提供了固定的项目结构,更加容易导入依赖(只需要在pom.xml文件中配置)
依赖管理
groupId
类似于Java的包名,通常是公司或组织名称artifactId
类似于Java的类名,通常是项目名称version 版本号
一个Maven工程就是由groupId
,artifactId
和version
作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定,如下
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency>
使用<dependency>
声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中
如果项目依赖 abc,abc又依赖fe,我们只需要 配置依赖abc jar包即可,maven会自动把依赖的fe jar包导入
maven下载过jar包之后,会永久安全的存在本地缓存中,不用每次都加载
搜索第三方组件:https://search.maven.org/,在这个网址搜索的组件 可以获取到 groupId
、artifactId
和version,如下搜索 log4j
maven构建流程
几个术语:lifecycle、phase、goal
lifecycle:maven的生命周期
phase:maven生命周期的各个阶段,如 validate、initialize、compile、test、package、verify、install等等
goal:执行一个phase又会触发一个或多个goal
概括:
lifecycle相当于Java的package,它包含一个或多个phase;
phase相当于Java的class,它包含一个或多个goal;
goal相当于class的method,它其实才是真正干活的
大多数情况,我们只要指定phase,就默认执行这些phase默认绑定的goal,只有少数情况,我们可以直接指定运行一个goal,例如,启动Tomcat服务器:mvn tomcat:run