Maven快速入门&在IDEA中配置与使用
在这个世界上取得成就的人,都努力去寻找他们想要的机会,如果找不到机会,他们便自己创造机会。“你好,我是梦阳辰,快来和我一起学习起来吧!
先难后易:先讲maven的命令使用,再讲maven在idea中的使用。
文章目录
Maven是一个快速构建工具。
Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。
传统开发项目存在的问题:
传统开发项目的问题,没有使用maven 【maven】管理的项目很多模块,模块之间有关系,手工管理关系,比较繁琐。
2)需要很多第三方功能,需要很多jar文件,需要手工从网络中获取各中jar
3)需要管理jar的版本,你需要的是mysql .5.1.5.jar拿你不能给给一个mysql.4 .0.jar4)管理jar文件之间的依赖,你的项目要使用a.jar。
4)解决jar依赖问题,a.jar包依赖于b.jar,你需要手动下载b.jar包。
软件开发需要编译代码一>开发人员自己测试代码一>把代码打包一>部署项目到测试服务器一>测试人员测试功能―>测试测试出bug
开发人员需要修改bug一>开发人员自己测试代码一>把代码打包->部署项目到测试服务器―>测试人员测试功能一>直到符合功能要求。
上述过程需要重复多次,大型项目中构建项目比较复杂,有很多的配置文件,jar文件,多个子项目等等。都用人力完成费时费力,效率比较低。maven可以让我们从上面的工作中解脱出来。
mavren的作用
1.maven可以管理jar文件
2.自动下载jar和它的文档,源代码。
3.管理jar直接的依赖,a.jar需要b.jar,maven会自动下载b.jar
4.管理你需要的jar版本。
5.帮你编译程序,把java编译为class。
6.帮你测试你的代码是否正确。
7.帮你打包文件,形成jar文件,或者war文件。
8帮你部署项目
我们的项目,往往都要经历编译、测试、运行、打包、安装﹐部署等一系列过程。
什么是构建?
指的是项目从编译、测试、运行、打包、安装,部署整个过程都交给maven进行管理,这个过程称为构建。
一键构建
指的是整个构建过程,使用maven一个命令可以轻松完成整个工作。
Maven规范化构建流程如下:
1 .清理,把之前项目编译的东西删除掉,我新的编译代码做准备。
2.编译,把程序源代码编译为执行代码,java-class文件批量的,maven可以同时把成千上百的文件编译为class-javac 不一样,javac一次编译一个文件。
3.测试,maven可以执行测试程序代码,验证你的功能是否正确。
批量的,maven同时执行多个测试代码,同时测试很多功能。
4.报告,生成测试结果的文件,测试通过没有。
5.打包,把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。”这个压缩文件就是项目的结果文件,通常java程序,压缩文件是jar扩展名的。对于web应用,压缩文件扩展名是.war。
6.安装,把5中生成的文件jar, war安装到本机仓库
7.部署,把程序安装好可以执行。
1)PoM :“一个文件名称是pom . xml , pom翻译过来叫做项目对象模型。
maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
2)约定的目录结构:maven项目的目录和文件的位置都是规定的。
3)坐标:是一个唯一的字符串,用来表示资源的。
4)依赖管理:管理你的项目可以使用jar文件。
5)仓库管理(了解):你的资源存放的位置。
6)生命周期(了解):maven工具构建项目的过程。
7)插件和目标(了解):执行maven构建的时候用的工具就是插件。
8)继承
9)聚合
1)下载maven的安装包。
最好下载:apche-maven-3.3.9-bin.zip版本。目前使用也最为广泛。
下载地址:http://maven.apache.org/download.cgi
2)解压文件,解压到一个非中文目录。
子目录conf:maven工具的配置文件 settings.xml。
子目录bin:执行程序,主要是mvn.cmd.
3)配置环境变量
在系统的环境变量中,指定一个MAVEN_HOME的名称,指定它的值是maven工具安装目录,bin之前的目录。
4)打开dos窗口,输入mvn -v出现
表示安装成功。
注意:maven工具依赖于java,所以你需要事先安装jdk,并配置环境变量。
约定是大家都遵循的一个规则。
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)。
在Hello目录下,启动cmd。在窗口中输入mvn compile编译src/main目录下的所有java文件。
现象:maven正在下载东西。
1.为什么要下载?
maven工具执行的操作需要很多插件(java类–jar文件)完成的。
2.下载什么东西?
java类–jar文件–插件(完成某些功能)
3.下载的东西放哪里了?
默认仓库。
c:\Users\(用户名).m2\repository
执行
mvn complie
结果在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中。
更改本地仓库地址
设置本机存放资源的目录位置。
1.修改maven的配置文件,maven安装目录/conf/settings.xml。
2.先备份settings.xml
3.修改<localRepository>
指定你的目录(不要使用中文目录)
仓库的概念:
仓库是存放东西的,Maven 仓库的是:
1.Maven 的插件,插件也是一些 jar,这些 jar 可以完成一定的功能。
2.我们自己开发项目的模块
3.第三方框架或工具的 jar 包
分类说明:
1)本地仓库:本机当前电脑上的资源存储位置,为本机上所有 Maven工程提供服务。
2)远程仓库:不在本机上, 通过网络才能使用。多电脑共享使用的。
①:中央仓库:通过Internet访问,为全世界所有 Maven工程服务。 最权威的。
②:中央仓库的镜像:架设在不同位置,欧洲,美洲,亚洲等每个洲都有若干的服务器,为中央仓库分担流量。减轻中央仓库的访问,下载的压力。所在洲的用户首先访问的是本洲的镜像服务器。
③:私服:在局域网环境中部署的服务器,为当前局域网范围内的所有 Maven工程服务。公司中常常使用这种方式。
仓库的使用:
maven仓库的使用不需要认为的参与。
在 Maven 构建项目的过程中如果需要某些插件,首先会到 Maven 的本地仓库中查找,如果找到则可以直接使用;如果找不到,它会自动连接外网,到远程中央仓库中查找;如果远程仓库中能找到,则先把所需要的插件下载到本地仓库,然后再使用,并且下次再用到相同的插件也可以直接使用本地仓库的;如果没有外网或者远程仓库中也找不到,则构建失败。
pom:( Project Object Mode)项目对象模型,是一个pom.xml文件。
Maven 把一个项目的结构和内容抽象成一个模型,在 xml 文件中进行声明,以方便进行构建和描述,pom.xml 是 Maven 的灵魂。所以,maven 环境搭建好之后,所有的学习和操作都是关于 pom.xml 的。
坐标:
Maven 把任何一个插件都作为仓库中的一个项目进行管理,用一组(三个)向量组成的坐标来表示。坐标在仓库中可以唯一定位一个 Maven 项目。
groupId:组织名,通常是公司或组织域名倒序+项目名artifactId:模块名,通常是工程名。
version:版本号需要特别指出的是,项目在仓库中的位置是由坐标来决定的:groupId、artifactId 和 version 决定项目在仓库中的路径,artifactId 和 version 决定 jar 包的名称。
依赖:
一个 Maven 项目正常运行需要其它项目的支持,Maven 会根据坐标自动到本地仓库中进行查找。
对于程序员自己的 Maven 项目需要进行安装,才能保存到仓库中。
如果我们需要什么jar包等依赖:
只需要去这个网站:https://mvnrepository.com/
例如我们需要mysql包。
点进去:
将选择部分复制添加到pom.xml文件的<dependencies>
标签下即可。
Maven 的生命周期
Maven 的生命周期就是maven构建项目的过程,清理,编译,测试,报告,打包,安装…
对项目的构建是建立在生命周期模型上的,它明确定义项目生命周期各个阶段,并且对于每一个阶段提供相对应的命令,对开发者而言仅仅需要掌握一小堆的命令就可以完成项目各个阶段的构建工作。
构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成。不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始的。
对于我们程序员而言,无论我们要进行哪个阶段的构建,直接执行相应的命令即可,无需担心它前边阶段是否构建,Maven 都会自动构建。这也就是 Maven 这种自动化构建工具给我们带来的好处。
Maven 对所有的功能都提供相对应的命令,要想知道 maven 都有哪些命令,那要看 maven 有哪些功能。
maven可以独立使用,通过命令,maven生命周期的执行。
一开始就跟大家说了,maven 三大功能:管理依赖、构建项目、管理项目信息。
管理依赖,只需要声明就可以自动到仓库下载;
管理项目信息其实就是生成一个站点文档,一个命令就可以解决,最后再说;那 maven 功能的主体其实就是项目构建。
Maven 提供一个项目构建的模型,把编译、测试、打包、部署等都对应成一个个的生命周期阶段,并对每一个阶段提供相应的命令,程序员只需要掌握一小堆命令,就可以完成项目的构建过程。
maven插件:
maven命令执行时,真正完成功能的时插件,插件就是一些jar文件,一些类。
单元测试:
单元测试(测试方法):用的是junit,. junit是一个专门测试的框架(工具)。junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的。
方法是测试的基本单位(单元)
maven借助单元测试,批量的测试你类中的大量方法是否符合预期。
使用步骤:
1.加入依赖,在pom.xml加入单元测试的依赖。
2.在maven项目中的src/test/java目录下,创建测试程序。
推荐的创建和方法的提示:
1.测试类的名称 Test+你要测试的类名。
2.测试的方法名称 test+方法名称
2.在maven项目中的src/test/java目录下,创建测试程序。
例如你要测试HelloMaven ,
创建测试类TestHelloMavenTest
public void testAdd () {
测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值,必须的
3.方法名称是自定义的,推荐是Test +方法名称4.在方法的上面加入@Test
4.方法不能有参数
清理(会删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除)
mvn clean
编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)
编译main/java/目录下的java为class文件,同时把class拷贝到target/classes目录下面main/resources目录下的所有文件都拷贝到target/classes目录下.
mvn compile
编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)
mvn test-compile
测试(会生成一个目录surefire-reports,保存测试结果)
mvn test
打包主程序(会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)
mvn package
安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
mvn install
部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。
还会自动把项目部署到 web 容器中)。
mvn deploy
插件可以在自己的项目中设置,最常使用的是 maven 编译插件。设置项目使用的 jdk 版本时通过编译插件指定。pom.xml 文件<build>
中设置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<!--插件的名称-->
<artifactId>maven-compiler-plugin</artifactId>
<!--插件的版本-->
<version>3.8.1</version>
<configuration>
<!-- 告诉maven 写的代码是在jdk1.8上编译的。
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
clean 构建之后清理目标文件。删除目标目录。
compiler 编译 Java 源文件。
surefile 运行 JUnit 单元测试。创建测试报告。
jar 从当前工程中构建 JAR 文件。
war 从当前工程中构建 WAR 文件。
javadoc 为工程生成 Javadoc。
antrun 从构建过程的任意一个阶段中运行一个 ant 任务的集合。
maven配置阿里云仓库镜像
为什么配置,因为中央仓库在国外,下载速度极慢。
配置中用仓库镜像可以提供下载速度。
修改settting文件
在mirrors标签下添加子节点。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
< mirrorOf>可以设置为指定中央仓库做镜像。
< mirrorOf>central< /mirrorOf> 为名为“central”的中央仓库做镜像; < mirrorOf>*< /mirrorOf> 为所有中央仓库做镜像。
Maven默认中央仓库的id 为 central。id是唯一的。
1.idea中内置了maven,一般不使用内置的,因为内置修改maven的设置不方便。
2.使用自己安装的maven,需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息。
3.File–>settings(当前项目设置)
pom.xml配置文件
注:如果不想用模板,只想创建普通的maven项目,
在第一步不用勾选模板创建即可。
ou are not brave, no one for you to be strong. 你不勇敢,没人替你坚强。