Maven工程自学笔记(学习视频来自于尚硅谷)

Maven工程学习

1.Maven工程结构

注意:本文中的父亲文件统一为一个POM文件,也就是普通工程放置在POM文件工程下面

1.非配置文件(普通的代码文件


        1.src文件主要存放项目的主代码
           pom.xml文件主要进行文件的配置,进行文件的依赖管理     
           

2.配置文件(POM文件 注意 不是pom.xml

一个大项目中的规范性文件,没有src文件,只有pom.xml文件

理解:一个大型项目中由多个人进行分工合作各个小项目,每个人的小项目在编写时都需要使用各

          自的依赖包,这样会导致最后项目合并时依赖不兼容而导致问题,POM文件的引入相当于
          一个父亲文件,他不需要src文件存放代码,只需要在pom.xml文件中规范统一的依赖包,
         然后各个小项目在各自的pom.xml文件中去继承父亲文件也就是POM文件的pom.xml文件
         中的各个依赖就行(该文件定义了所有子模块的公共配置和依赖关系。这个父POM通常不包          含源代码或资源,它的主要目的是管理和配置子模块。)   

如mirco-shop-pom就是一个POM文件:

2.src文件


               

  •                 main文件中放置代码文件
  •                 test文件放置测试文件

3.pom.xml文件

1.三大标签

                包含了<groupId>和<artifactId>和<version>,是一个maven项目的唯一坐标,可以理解为用来定位这个maven项目的(后面在本地仓库引用别的项目的依赖时会用到)

                       

  • <groupId>

    • 定义:groupId 是项目组织唯一的标识符,它通常是公司或组织的域名倒写。例如,Apache 的 groupId 是 org.apache

    • 作用:它有助于区分不同的项目,尤其是在多个项目可能有相同的 artifactId 时。groupId 通常与组织的结构相关。

    • 示例com.example.mycompany

  • <artifactId>

    • 定义:artifactId 是项目的唯一标识符,它通常是项目的名称或模块的名称。

    • 作用:artifactId 与 groupId 一起唯一地标识一个 Maven 项目。当你想在项目中引用其他库或依赖项时,你会使用这两个标识符来找到它。

    • 示例:如果你正在开发一个名为 "my-app" 的应用程序,那么 artifactId 可能是 my-app

  • <version>

    • 定义:version 是项目的版本号。Maven 使用它来识别项目的特定版本。

    • 作用:版本号有助于区分同一项目的不同发布版本。你可以使用 Maven 的依赖管理功能来指定你想要使用的特定版本。

    • 示例1.0.02.5.3-SNAPSHOT 等。版本号可以包含主版本号、次版本号和增量版本号(如 1.2.3),以及可能的快照(SNAPSHOT)或发布候选(RC)标记。

      

             例外:父Mavne项目下的子Maven项目的<version>标签可以进行Java的重写
                      功能,也就是写子项目的版本
                       如:
                       父文件:

                        

                        子文件:
                                             

2 package标签

        1.java项目用jar形式打包,web工程用war形式打包,配置项目用pom形式打包

注:pom文件相当于一个大型开发中的进行所有依赖的管理的规范的文件,没有src文件

3  Maven的依赖
1.依赖的传递
  1. 存在一个依赖a依赖于另一个依赖b,b又依赖于c,那么当Maven导入依赖a时,依赖b和c自动导入

  2. 第一个依赖路径:a依赖于b(版本1.8.3),b依赖于c(版本1.5.3)
    第二个依赖路径:d依赖于b(版本2.4.5)

    先进行导入依赖a的操作,再进行导入依赖d的操作,此时导入的则是a,d,b(版本1.8.3)

    解释:1.先进行的操作则先导入:a的导入需要b(1.8.3)
                  d的导入需要b(2.4.5),此时发生冲突,因为a先操作,所以b(1.8.3)就进行导入
               2.依赖路径发生冲突时,后面的路径传递自动结束。也就是a的导入需要b(1.8.3)
                  d的导入需要b(2.4.5),此时发生冲突,导入b(1.8.3)之后,c的导入就不执行

    解决办法:手动导入                     

2.单一项目文件配置依赖

所有依赖工程放到<dependencies></dependencies>标签之中,在其中使用<dependency></dependency>标签放入依赖的配置(找依赖可以去Maven Repository: Search/Browse/Explore (mvnrepository.com)

在里面能直接复制所需要的依赖的maven工程的代码块,就是下图)

        

3.多个项目文件或者包含有父文件

在父文件中使用<dependencyManagement></dependencyManagement>再在里面使用<dependencies></dependencies>标签,配置各个依赖项目

父文件中的配置:

这样,在子文件中进行依赖的下载时就不用再去引用<version>标签来说明该依赖的版本号了

子文件:

4.一个子项目去导入另外一个子项目形成的依赖

将一个子项目进行mvn install操作

该子项目版本信息

另外一个子项目进行导入

注意:每一次依赖导入后都要进行更新!!!

注:依赖导入时若本地仓库存在相关依赖的不完整文件时会导入失败,需要清理干净再导入,同时通过阿里云的镜像访问也会失败!!!

4.Maven的构建

1.Maven编译、清理、测试、打包项目(这里直接使用idea的maven工具)

  1. mvn clean(clean)
    • 作用:清理项目。执行该命令后,Maven会删除项目中生成的目标文件和临时文件,包括编译得到的class文件、打包文件以及项目构建过程中生成的其他临时文件。
  2. mvn compile(compile)
    • 作用:编译项目的主代码。它会将src/main/java目录下的Java源代码编译为class文件,并输出到target/classes目录中。
  3. mvn test(test)
    • 作用:执行项目中的单元测试。它会编译和执行src/test/java目录下的测试代码,并生成测试报告。
  4. mvn package(package)
    • 作用:将项目打包为可部署的格式,如JAR文件或WAR文件。执行该命令后,Maven会自动执行项目的编译、测试和打包等过程,并将打包结果输出到target目录下的对应文件夹中,如target文件夹下的jar或war文件。
  5. mvn install(install)
    • 作用:将项目打包并安装到本地Maven仓库中。除了执行mvn package的所有操作外,还会将生成的JAR或WAR文件安装到本地Maven仓库中,供其他项目依赖使用。
  6. mvn deploy(deploy)
    • 作用:将项目发布到远程Maven仓库中。它首先会执行mvn install的所有操作,然后将生成的JAR或WAR文件发布到指定的远程Maven仓库中,供其他开发者或项目下载和使用。
  7. mvn site(site)
    • 作用:生成项目站点文档。Maven可以根据项目的pom.xml文件和配置,自动生成项目的站点文档,包括项目报告、依赖关系图等。
  8. mvn verify(verify)
    • 作用:验证项目是否满足质量标准。它会对项目进行测试和检查,确保项目满足预设的质量标准,如代码覆盖率、测试通过率等。

注意:这里的每个命令都是由相对应的插件执行而成的!!!

一般的直接执行install命令时会自动的执行install前面的几个命令如clean package,方便了操作

2.父项目中modules标签

其中插入了子项目的名称,可以在父项目maven中执行构建命令时一起将标签中的子文件一起进行构建,减少了操作,当然子项目之间的引用需要事先进行单独的构建操作,可以不写入父项目的modules标签之中

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值