目录
友情提醒
先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。
第一章、Maven概述
1.1)Maven是什么
① Maven 是工具,专注服务于 Java 平台的项目自动化构建和依赖管理。
②可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目。
③提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
④可以根据指定版本自动解决jar包版本兼容问题。
⑤可以把jar包所依赖的其它jar包自动下载并引入项目。
1.2)Maven进行构建(build)的主要环节
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应war包。
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行
第二章、Maven的下载安装和配置
2.1)Maven的下载
①maven本身就是java写的所以要确保下载安装了java的JDK环境。(都用mave了,不至于不会装JDK啊这里就不赘述了)
②官网下载Maven:官网链接:http://maven.apache.org/download.cgi
③选择需要的版本,这里选择3.5.3版本
④选择binaries
⑤下载,然后解压到安装目录就安装成功了,注意:解压好了就是安装好了
2.2)Maven环境变量配置
①环境变量配置
右击桌面的“此电脑”图标>点击属性”>点击高级系统设置>环境变量>
②配置到系统环境变量path
2.3)Maven文件setting的配置
①文件结构,进入conf,点击setting文件
②设置本地仓库:在本地磁盘中创建一个repository文件夹,我在D盘创的
③在settings.xml文件中找到仓库配置,修改路径为刚刚创建的repository文件夹路径
④settings.xml中的插件配置
⑤settings.xml文件中修改镜像配置,找到</mirrors>标签,加入代码即可
<!--
maven的中央仓库是在Apache的国外网站,下载效率低
使用阿里镜像文件提高maven工程的构建和jar包的引入速度
--><mirrors><!-- 阿里镜像 --><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror><mirror><id>central</id><name>MavenRepositorySwitchboard</name><url>http://repo1.maven.org/maven2/</url><mirrorOf>central</mirrorOf></mirror><mirror><id>repo2</id><mirrorOf>central</mirrorOf><name>HumanReadableNameforthisMirror.</name><url>http://repo2.maven.org/maven2/</url></mirror><mirror><id>ibiblio</id><mirrorOf>central</mirrorOf><name>HumanReadableNameforthisMirror.</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url></mirror><mirror><id>jboss-public-repository-group</id><mirrorOf>central</mirrorOf><name>JBossPublicRepositoryGroup</name><url>http://repository.jboss.org/nexus/content/groups/public</url></mirror><mirror><id>google-maven-central</id><name>GoogleMavenCentral</name><url>https://maven-central.storage.googleapis.com
</url><mirrorOf>central</mirrorOf></mirror><!-- 中央仓库在中国的镜像 --><mirror><id>maven.net.cn</id><name>oneof the central mirrors in china</name><url>http://maven.net.cn/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>
第三章、Idea整合Maven
3.1)Idea配置Maven
①第一步设置:File>Other Settings>settings for New Projects 设置将会作用于所有新建项目
②第二步:File>Other Settings>build,Execution,Deployment>Build Tools>Maven设置文件路径仓库路径
3.2)新建Maven项目
①第一步:创建工程New project>Maven>勾选Creat from archetype>选择Maven web工程。点击next下一步
②第二步:填好工程三要素:包名,工程名,版本。点击next下一步
③第三步:确定路径有没有错,没错直接下一步,然后finish
3.3)低版本的Idea可能出现文件缺省
①Maven的web工程会出现文件缺省,需要我们手动补齐File>project Structure>选择工程,补全工程结构
②Webapp没有标识时需要手动引入web属性
③设置路径信息
第四章、pom.xml文件配置
4.1)pom文件三要素
建好Maven工程后,文件列表中会看到pom.xml文件
配置文件通过三要素来锁定一个工程:
①version(版本号)
②groupId(包名)
③artifactId(工程名)
<!--maven的版本号,目前3.0以上的maven工具,生成的都是4.0版本的模型--><modelVersion>4.0.0</modelVersion><!--包名全小写,域名倒写例如 com.Java或者域名倒写+项目名。例如 com.Java.test--><groupId>com.java</groupId><!--工程名--><artifactId>maven002</artifactId><!--工程版本号,版本号都是3位是1.0.0,SNAPSHOT:不稳定版--><version>1.0-SNAPSHOT</version><!--工程打包方式,可以 jar、war、rar、ear、pom,默认是 jar--><packaging>war</packaging>
4.2)pom文件中JDK资源配置
配置为1.8
<!--全局属性的配置--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties>
4.3)pom文件中配置依赖管理
Maven可以根据三要素把需要的jar包依赖从本地仓库引入,并添加到war包中。
如果本地仓库没有,则去远程仓库下载到本地仓库。
从网站查询到需要引入的jar包三要素:Maven的jar包网站:https://mvnrepository.com/
①我们想要导入mysql的依赖jar包,先进入网站查询MySQL
②找到相关的jar包,点击进入选择版本
③如果不太熟悉的话,可以选择使用量较多的版本
④选择后,将下列代码复制进pom.xml文件
⑤复制到pom里面,点击更新会自动下载
⑥依赖传递
如果当前jar包还需要依赖其他jar包,则maven也会帮助我们直接引入,且自动适应版本号
<!--此处只需要引入commons-fileupload.jar需要依赖的commons-io.jar会被自动引入--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></dependency>
4.4)pom文件中build标签进行插件和资源管理
一般我们配置扫描资源文件就好了,插件不需要我们配置
<build><!--扫描文件资源--><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include></includes></resource></resources><!--插件--><pluginManagement><!-- lock down plugins versions toavoid
using Maven defaults (may be moved toparent 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的生命周期
5.1)Maven的插件使用
①构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成
②不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始的。
③清理 --> 编译 --> 测试 --> 打包 --> 安装,每一个步骤都会把前面的步骤再执行一遍。
5.2)Maven依赖的生命周期
依赖范围编译classpath有效测试classpath有效运行classpath有效例子compile√√√spring-coretest√Junitprovided√√servlet-apiruntime√√JDBC驱动system√√本地的,maven仓库之外的类库
1.compile默认
compile依赖默认值,在编译、测试和运行周期都存在。
2.provided
provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用,provided依赖在编译和测试时需要,在运行时不需要,比如:servlet-api 被 tomcat 容器提供。
3.runtime
runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
4.test
test范围依赖在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
比如:junit。由于运行时不需要所以 test范围依赖不会被打包。
5.system
stystem范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
版权归原作者 悲且狂 所有, 如有侵权,请联系我们删除。