当前位置:   article > 正文

什么是Maven?_maven是什么意思

maven是什么意思

Maven翻译为“专家”、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM),Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理各种项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。


 在介绍之前有个故事讲给你听: 假如我们正在开发两个项目(A 和 B),其中A项目中的一些功能依赖于B项目中的某些类,那么该如何来维系这种依赖关系?

       有人说: 很简单,我们之前在写程序的时候,需要用什么就把需要的内容导入自己的项目中,导入jar包即可,所以这里也一样,可以将B项目打包成jar包,然后在A项目的Library下导入B的jar文件,这样A项目就可以调用B项目中的某些类了。

        但是这样有一个严重的缺陷就是:在开发的过程中,如果发现B有bug那么,我们需要把项目B修复好,然后重新将B打包,并对项目A进行重编译操作。

      那我们应该怎么办?

下面就开始介绍Maven

1.Maven是干什么的?

创建管理Java项目

通过maven的pom.xml文件来管理的,需要用到很多的第三方jar(依赖)包。

maven是一个工程构建的一个工具。

project工程的根标签。
modelVersion模型版本需要设置为 4.0。
groupId这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。
artifactId这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。
version

这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如:

com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1

gav(必须的三个)是针对Maven仓库的jar包给一个编号(导入依赖就是导入jar包)

  1. G(groupId):组织机构。
  2. A(artifactId):哪个团队开发的特性。
  3. V(version):不同时间段,开发的不同的版本。

Maven的使用:

根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包。
pom.xml获取junit的jar包的编写。

  1. <dependency>
  2. <!--通过groupId、artifactId、version三个属性来定位一个jar包-->
  3. <groupId>junit</groupId>
  4. <!--groupId:一般为包名,也就是域名的反写-->
  5. <artifactId>junit</artifactId>
  6. <!--artifactId:项目名-->
  7. <version>3.8.1</version>
  8. <!--所需要jar包的版本-->
  9. <scope>test</scope>
  10. <!--此局的意思是该jar包只在测试时使用--
  11. </dependency>

为什么通过groupId、artifactId、version三个属性就能定位一个jar包呢?

假如上面的pom文件属于A项目,那么A项目肯定是一个maven项目,通过上面这三个属性就能找到junit对应版本的jar包,那么junit项目肯定也是一个maven项目,junit的maven项目中的pom文件就会有三个标识符,如下代码所示,然后别的maven项目那个通过这三个属性来找到junit项目的jar包了。所以,在每个创建的maven项目时都会要求写上这三个属性的值。


Maven仓库:

在 Maven 的术语中,仓库是一个位置(place)。

Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。

Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)

获取.jar包

Java Project ——> GAV Maven坐标——>Maven中央(远程)仓库(国外 )国外的下载有防火墙 下载慢 所以中国就做了一个镜像的远程仓库(Alibaba 网易 清华 )——>downliad(下载).jar——>本地仓库——> Java Project
本地仓库就是中央仓库的一个镜像
如果有就去本地仓库找 没有就去中央仓库下载  

这里可以看到你是从什么仓库下载jar包的

 

maven 会默认从maven官方提供的服务器下载jar包。而官方服务器在国外,网速很慢,而且容易卡断。 为了便于快速下载相关jar包,可以使用国内maven 阿里云的下载地址。修改

修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:

  1. <mirrors>
  2. <mirror>
  3. <id>alimaven</id>
  4. <name>aliyun maven</name>
  5. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  6. <mirrorOf>central</mirrorOf>
  7. </mirror>
  8. </mirrors>

第二步: pom.xml文件里添加:

  1. <repositories>
  2. <repository>
  3. <id>alimaven</id>
  4. <name>aliyun maven</name>
  5. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  6. <releases>
  7. <enabled>true</enabled>
  8. </releases>
  9. <snapshots>
  10. <enabled>false</enabled>
  11. </snapshots>
  12. </repository>
  13. </repositories>


生命周期:        

针对一个的生命周期  定义了很多的抽象环节    然后用一个一个插件具体实现抽象的环节
每一个环节都有一个plugins  都是通过plugins
对于生命周期的管理
使用这些生命周期的时候 当点击的时候越往下点上面的都会跟着执行

  1. Clean(清除项目下以前编译的内容,清空target目录,运行的都是target目录)
  2. Validate(验证编译有没有编译错误)
  3. Complie(编译,将.java——>.Class——>放到target)
  4. Test(单元测试 就是把原有的类放到Test类里面进行测试)
  5. package(打包 打成(jar包和war包))
  6. varify (校验 jar或者war是否正确  针对打包去做的)
  7. Install (安装到指定的服务器 或者目录)
  8. deploy(部署  部署到远程服务器)

jar包和war包的区别?

jar包:通常是开发时要用到的引用通用类,打成包便于存放管理。

所有的包都是用jar打的,只不过目标文件的扩展名不一样。


WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。

war包:是做好一个web应用后,通常是网站,打成包部署到容器中。

war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的.
它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。

这里扩展一个包:ear包 企业级应用,通常是EJB打成ear包。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/413856
推荐阅读
相关标签
  

闽ICP备14008679号