什么是Maven?
Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义再生命周期阶段中插件目标的逻辑;
可以做到的功能
- 可以有效的管理jar包防止jar包冲突问题;
- maven可以自动编译,打包,运行,测试,部署可以管理项目的生命周期;
maven仓库及配置
- 分类
- 本地仓库:第一次当代码需要仓库时,他会先找本地仓库,如果没有默认去中央仓库进行下载,第二次查找时如果本地有则会去本地仓库;
- 远程仓库:私服,如果配置了本次仓库开始找先从远程仓库找,如果没有则回去中央仓库找,找到下载jar包,本地再从中央仓库进行下载,好处:可以定义公司自定义的jar包;
- 中央仓库:它是由Maven团队自己维护,全球唯一的仓库(国外的),有全部开源的jar包;
-
配置本地仓库位置
- 打开maven的C:\Users\sj176\apache-maven-3.8.5-bin\apache-maven-3.8.5\conf\settings.xml文件打开后配置
Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository>
修改localRepository想要放置的目录即可;
-
配置中央仓库镜像阿里
由于外网访问较慢所以在这里配置了阿里的私服镜像可以加快jar包的下载速度
阿里云地址<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
打开maven的C:\Users\sj176\apache-maven-3.8.5-bin\apache-maven-3.8.5\conf\settings.xml文件打开后配置
将上述代码加入<mirrors></mirrors>
放入后配置完成;
Maven目录结构
- src:源码
- main:主工程代码
- java:主工程代码
- resources:主公程需要使用的文件
- webapp:web项目的资源目录(jsp/html/WEB-INF./classes,lib),注意只有web项目才会有webapp目录,普通的java项目是没有的;
- test:测试代码
- java:测试代码
- resources:测试需要使用的配置文件
- main:主工程代码
- pom.xml:项目的核心配置文件
Maven常用命令
- compile:,如果是javaee项目则会打包成war包,编译;
- test:
- clean:删除target目录等
- install:将项目安装到本地仓库;
Maven生命周期
同一套生命周期中,执行后边的操作,会自动执行前面所有操作;每一个生命周期命令都有相关插件执行;
maven的生命周期就是项目的生命周期,生命周期分为
- 在进行真正构建之前进行一些清理工作.Clean Lifecycle
- 编译->测试->打包->安装 默认生命周期-Default Lifecycle
- 生成项目报告,站点,发布站点-Site Lifecycle
IDEA中集成Maven环境,创建项目
- 配置Maven,file->Settings->
- new Module 选择Maven,其中可以选择Archetype模板,
- </packaging> 打包方式,默认是jar默认值,如果是web的则修改为war,还有一个pom方式注意的是如果war还需要安装下方插件不然会报错误:Cannot access defaults field of Properties
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
- 骨架选择:
- org.apache.maven.archetypes:maven-archetype-webapp 为webapp的架构
- org.apache.maven.archetypes:maven-archetype-quickstart java项目
- 导入坐标依赖文件:dependencies中填写添加
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
- 修改maven插件编译版本,IDEA按alt+insert可以选择插件的模板
<build> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> </plugins> </pluginManagement> </build>
maven默认编译版本为1.5,因为这是一个很古老的版本(过时),新项目开发不可能还会使用这么老的版本,所以在项目中需要做一些相关配置。
方式一:使用properties属性覆盖maven的默认配置。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
方式二:在插件中指定.
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Maven配置tomcat执行
Maven坐标
被Maven管理的资源的唯一标识,坐标一共有三部分构成
- groupId:组织名称
- atifactId:模块名称
- version:版本号
依赖
A依赖B,需要再A的pom.xml文件中添加B的坐标,添加坐标时需要指定依赖范围<scope>compile</scope>
,依赖范围包括:
依赖范围 | 对于编译classpath有效(main/) | 对于测试classpath有效(test/) | 对于运行时classpath有效(war/jar/) | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | jedis |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | JDBC驱动 |
网友评论