• 2022-9-16 第七小组 学习日记 (day71)Maven


    目录

    (上午)

    什么是Maven:

    Maven的优缺点:

    优点:

    缺点:

    Maven生命周期:

    1.clean周期:

    2.默认周期:

    3.site周期:(站点)

    Maven坐标

    Maven常见的依赖范围

    依赖的传递:

    (下午)

    下载

     安装/解压

    配置环境变量

     测试

    Maven仓库

     配置本地仓库

     配置阿里云的远程仓库

    idea创建Maven项目

    总结


    什么是Maven:

    译为“专家”、"内行“,是Apache基金会下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,主要用于基于Java开发的项目创建,依赖管理和项目信息管理。

    Maven的优缺点:

    优点:

    1. 对第三方依赖库进行统一的版本管理
    2. 统一项目的目录结构
    3. 统一软件构建阶段
    4. 便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
    5. 有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。
    6. maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等
    7. 自动生成项目网站和报表

    缺点:

    1. maven是一个庞大的构建系统,学习难度大
    2. maven采用约定优于配置的策略(convention over configuration),虽然上手容易,但是一旦出了问题,难于调试。
    3. 当依赖很多时,m2eclipse 老是搞得Eclipse很卡。
    4. 中国的网络环境差,很多repository无法访问,比如google code, jboss 仓库无法访问等。

    Maven生命周期

    1.clean周期:

    (清理)主要用于清理上一次构建产生的文件,可以理解为删除target目录

    2.默认周期:

    真正进行项目编译导报等工作阶段

    1. validate:验证项目是否正确
    2. compile:编译,编译项目的源代码*****
    3. test:测试,junit这些测试不应该要求代码被打包或部署
    4. package:进行打包。
      1. java工程------------.jar
      2. javaweb工程------.war
    5. verify:验证,对集成测试结果执行检察
    6. install:安装****
      1. 所有的项目都可以编程jar包*(依赖)
    7. deploy:部署,及那个最终的包赋值到远程储存库,和其他开发人员共享(maven私服)

    3.site周期:(站点)

    1. site产生项目的站点文档
    2. site-deploy将项目的站点文档部署到服务器

    Maven坐标

    1. GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。
    2. ArtifactId:项目名。单独项目的唯一标识符。
    3. Version:版本

    通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中

    Maven常见的依赖范围

    1. compile:默认。编译范围,编译,测试,运行都有效。参与打包,安装。
    2. test:测试范围,只有在test范围下才能用,不参与打包,安装。
    3. provided:编译和测试,不参与打包,安装。
    4. runtime:运行,只参与运行。
    5. system:废弃。系统。
    6. import:废弃。引入。

    依赖的传递:

    比如所demo01的项目中引入了mysql,servlet,fastjson,codec依赖,那我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet,fastjson,codec会一起引入进来

    下载

    1.进入官网点击👉Maven官网👈下载文件

     安装/解压

    下载解压之后:把文件夹放到没有中文的路径下:我直接放到了c盘下,例如:C:\Maven\

    1.  bin:存放了 maven 的命令
    2. boot:存放了一些 maven 本身的引导程序,如类加载器等
    3. conf:存放了 maven 的一些配置文件,如 setting.xml 文件****这个xml文件是核心
    4. lib:存放了 maven 本身运行所需的一些 jar 包

    配置环境变量

    右键属性 

    新建一个变量:

    变量名:MAVEN_HOME

    变量值:Maven存放的路径(bin目录上一级)例如:C:\apache-maven-3.8.6-bin\apache-maven-3.8.6(这是我的路径)

     把MAVEN_HOME添加到Path系统变量中:%MAVEN_HOME%\bin

     测试

    打开cmd输入:mvn -v

     出现以下内容证明安装成功

    Maven仓库

    Maven中的仓库是用来存放maven构建的项目和各种依赖的(Jar包)。
     Maven的仓库分类:

    1. 本地仓库: 位于自己计算机中的仓库, 用来存储从远程仓库或中央仓库下载的插件和 jar 包,
    2. 远程仓库: 需要联网才可以使用的仓库,阿里提供了一个免费的maven 远程仓库。
    3. 中央仓库: 在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件

     配置本地仓库

    在maven安装目录中,进入 conf文件夹, 可以看到一个settings.xml 文件,我们在这里配置

     

     配置阿里云的远程仓库

    原来的库是连接外国的库,连不上,所以要改成咱们阿里云的镜像仓库 

     代码:  

    1.       <id>nexus-aliyunid>
    2.       <mirrorOf>centralmirrorOf>  
    3.       <name>aliyun mavenname>
    4.       <url>http://maven.aliyun.com/nexus/content/groups/publicurl>
    5.    

    idea创建Maven项目

    接下来就可以去idea创建一个maven的项目了

    首先一定要选中Maven,创建一个Maven的项目

     打开IDEA 选择File --> Settings --> 搜素maven,就会看到如下界面,并修改路径

     之后工程就是这个样子,如果不是,请重新开启idea

     maven导入依赖:在pom.xml文件里,例如导入mysql\junit\servlet等包

    1.         <dependency>
    2.             <groupId>mysqlgroupId>
    3.             <artifactId>mysql-connector-javaartifactId>
    4.             <version>5.1.49version>
    5.         dependency>
    6.         <dependency>
    7.             <groupId>junitgroupId>
    8.             <artifactId>junitartifactId>
    9.             <version>4.13.2version>
    10.             <scope>testscope>
    11.         dependency>
    12.         <dependency>
    13.             <groupId>javax.servletgroupId>
    14.             <artifactId>javax.servlet-apiartifactId>
    15.             <version>4.0.1version>
    16.             <scope>providedscope>
    17.         dependency>
    18.    

    点击刷新,他就会自动在阿里云镜像仓库里下载下来存到本地的仓库中
     

    总结

            今天学的Maven是新的架构知识,作用就是通过它连接jar包,调用起来更方便、效率更高

  • 相关阅读:
    Go分布式缓存 单机并发缓存(day2)
    使用qemu运行risc-v ubuntu
    如何写成高性能的代码(一):巧用Canvas绘制电子表格
    内网Jenkins 部署.net(dotnet)项目
    使用@Builder注解后,该对象 拷贝时出现java.lang.InstantiationException异常报错
    SpringBoot的创建和使用
    使用eolink优雅地进行API接口管理
    linux parted给磁盘分区
    车辆工程的入门学习
    今天面了一个java工程师,问他什么是分布式事务,感觉他没懂,希望他能看到吧
  • 原文地址:https://blog.csdn.net/weixin_56982770/article/details/126912844