先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。
① Maven 是工具,专注服务于 Java 平台的项目自动化构建和依赖管理。
②可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目。
③提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
④可以根据指定版本自动解决jar包版本兼容问题。
⑤可以把jar包所依赖的其它jar包自动下载并引入项目。
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应war包。
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行
①maven本身就是java写的所以要确保下载安装了java的JDK环境。(都用mave了,不至于不会装JDK啊这里就不赘述了)
②官网下载Maven:官网链接:http://maven.apache.org/download.cgi
③选择需要的版本,这里选择3.5.3版本
⑤下载,然后解压到安装目录就安装成功了,注意:解压好了就是安装好了
①环境变量配置
右击桌面的“此电脑”图标>点击属性”>点击高级系统设置>环境变量>
②配置到系统环境变量path
①文件结构,进入conf,点击setting文件
②设置本地仓库:在本地磁盘中创建一个repository文件夹,我在D盘创的
③在settings.xml文件中找到仓库配置,修改路径为刚刚创建的repository文件夹路径
④settings.xml中的插件配置
⑤settings.xml文件中修改镜像配置,找到标签,加入代码即可
<!--
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>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</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>
①第一步设置:File>Other Settings>settings for New Projects 设置将会作用于所有新建项目
②第二步:File>Other Settings>build,Execution,Deployment>Build Tools>Maven设置文件路径仓库路径
①第一步:创建工程New project>Maven>勾选Creat from archetype>选择Maven web工程。点击next下一步
②第二步:填好工程三要素:包名,工程名,版本。点击next下一步
③第三步:确定路径有没有错,没错直接下一步,然后finish
①Maven的web工程会出现文件缺省,需要我们手动补齐File>project Structure>选择工程,补全工程结构
②Webapp没有标识时需要手动引入web属性
③设置路径信息
建好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>
配置为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>
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>
一般我们配置扫描资源文件就好了,插件不需要我们配置
<build>
<!--扫描文件资源-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml
src/main/resources
**/ *.xml</include>
</includes>
</resource>
</resources>
<!--插件-->
<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>
①构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成
②不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始的。
③清理 --> 编译 --> 测试 --> 打包 --> 安装,每一个步骤都会把前面的步骤再执行一遍。
依赖范围 | 编译classpath有效 | 测试classpath有效 | 运行classpath有效 | 例子 |
---|---|---|---|---|
compile | √ | √ | √ | spring-core |
test | √ | Junit | ||
provided | √ | √ | servlet-api | |
runtime | √ | √ | 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依赖不推荐使用。