maven学习

本文详细介绍了Maven作为Java项目管理工具的安装配置、本地仓库和阿里云镜像设置,以及依赖和构建生命周期的概念。Maven基于项目对象模型,简化了项目构建、报告和文档的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么事 maven

         官网:http://maven.apache.org/

         Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. 

         即maven是一个软件(特别是java软件)项目管理及自动构建(从源码到成品的过程)工具,有Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,maven利用一个中央信息片段能管理一个项目的构建、报告和文档等步骤。简而言之是一个构建工具、以来管理工具以及项目信息聚合工具。

二、maven的安装与环境的配置

      1、windows安装maven

           ①、从官网下载maven

           ②、解压到想要安装maven的文件夹中

           ③、进入系统环境配置环境

           ④、在终端输mvn -v查看环境是否配置成功


maven安装成功,即可使用,以下为本地仓库(默认为c盘)与阿里的仓库镜像(使用默认官网仓库,会因翻墙二导致速度慢甚至可能无法下载)的配置   


   

           ⑤、进入安装目录,找到conf目录中的setting文件并打开

            ⑥、查找<localRepository></localRepository>标签,去掉对次标签的注释并修改为自己的本地仓库地址(我的本地仓库为D:/mvn/repo):<localRepository>D:/mvn/repo</localRepository>

             ⑦、查找<mirrors></mirrors>标签,在标签内加入如下内容:

 <mirror> 
      <id>alimaven</id> 
      <name>aliyun maven</name> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>central</mirrorOf>         
   </mirror> 

               ⑧、修改成功后保存,进入终端输入:mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.chinasofti.build -DartifactId=demo,即可测试是否配置成功。

            2、linux安装maven

三、maven的生命周期

       1、依赖的生命周期

                      依赖的生命周期—用来控制项目编译时需要使用哪套classpath,比如测试时会将junit.jar加入编译环境,但是发布产品时又不会将junit.jar加入到编译环境。

                   •compile:编译时依赖在所有阶段都可以获得(编译依赖范围)。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测 试、运行三种classpath都有效。典型的例子就是spring-core,在编译、测试、运行的时候都需要该依赖。

                   •test:测试范围依赖,仅在编译和运行单元测试时需要。该依赖只对于测试classpath有效,在编译主代码或者运行项目时,此依赖无效。典型的例子就是Junit,它只有在编译测试代码及运行测试的时候才需要。

                   •provided:已提供的依赖范围。该依赖对于编译和测试classpath有效,但在运行时无效。典型的例子就是servlet- api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要在maven重复的引入一遍。

                   •runtime:提供的依赖范围用来编译应用程序(运行时依赖范围),但无需部署。若用到jdk或者应用服务器提供的JAR,则使用此范围,servlet APIs就属于这个依赖范围。测试时,此依赖范围也加入到classpath。该依赖对于测试和运行classpath有效,但在编译主代码时无效。典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。

                   •system:本地依赖(系统范围依赖)。该依赖与provided依赖范围完全一致。但是使用system范围的依赖时必须通过systemPath指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用该依赖.

依赖范围(scope)

编译时依赖

测试时依赖

运行时依赖

是否打入包

例子

compile

Y

Y

Y

Y

SLF4J

provided

Y

Y

Y

N

SERVLET-API

test

N

Y

N

N

JUNIT

runtime

N

Y

Y

Y

MYSQL JDBC DRIVER

system

Y

Y

Y

Y

有nexus后,不用system

              依赖传递:只有编译和运行时才能依赖传递

                                  ①简单传递:A->B->C         =>          A->C

                                  ②其他传递:A->B->C(0.1)

                                                             A->C(0.2)

                                                             需遵循原则:最短路径原则     最终依赖为A->C(0.2)

                                                              A->B->C(0.1)

                                                              A->D->C(0.2)

                                                              遵循原则:第一申明原则     最终依赖为C(0.1) 

 

            2、构建的生命周期

                       maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。 生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。 goal是maven里定义任务的最小单元,相当于ant里的target。 可以理解maven为一个插件的容器,每个插件绑定到某个goal执行。其中lifecycle又有defualt、clean、site三大独立的生命周期组成。            

                      ①clean:目的是清理项目

                                    1)pre-clean:执行一些清理前需要完成的工作
                                    2)clean:清理上一次构建生成的文件
                                    3)post-clean:执行一些清理后需要完成的工作
                      ②default:目的是构建项目

                      ③site:目的是建立项目站和发布站点。maven能够基于pom所包含的信息,自动生成一个侯浩的站点,方便团队交流和发布项目信息。
                                1)pre-site执行一些在生成项目站点之前需要完成的工作
                                2)site生成项目站点文档
                                3)post-site执行一些在生成项目站点后需要完成的工作
                                4)site-deploy将生成的项目站点发布到服务器上                                   

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值