maven高级

分模块设计与开发:

  •     都写在一个模块里面。使的各模块之间不便于维护,并且难以复用。
  •     将项目按照功能拆分成若干个子模块,方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。

分析:

maven高级_第1张图片

maven高级_第2张图片

拆分后的格式:

maven高级_第3张图片

    步骤:

  • 创建maven模块 tlias-pojo,存放实体类。
  • 创建maven模块 tlias-utils,存放相关工具类。

注意:

 1,我们创建新的module(模块的时候,要把我们新的模块的包名,改成和未拆分前一样的包名)

创建一个新的空工程 web-project4:

maven高级_第4张图片

空工程jdk的配置:

maven高级_第5张图片

配置jdk21版本:

 maven高级_第6张图片

把我们之前写好的 tlias-management。放在刚刚创建的web-project4。空工程中

maven高级_第7张图片

打开ideal:

maven高级_第8张图片

开始拆分:

把pojo包下的,类重新创建一个模块,拆分过去(创建新的module然后放到新模块的pojo包下)新建 tlias-pojo模块

maven高级_第9张图片

tlias-pojo模块创建好,的样子。

maven高级_第10张图片

然后定义 com.sde.pojo包,这个包和未拆分前项目的包路径保持一致。

maven高级_第11张图片

把要拆分的项目,pojo包下的类赋值到刚刚创建的,新模块 tlias-pojo 的pojo包下

maven高级_第12张图片

可以发现很多爆红的地方。

maven高级_第13张图片

在 tlias-pojo模块下的 pom文件里面引入依赖。

maven高级_第14张图片


    
        
            org.projectlombok
            lombok
            1.18.30
        
        
            org.springframework.boot
            spring-boot-starter
            3.2.0
        
    

在此查看实体类,发现不报错了。

maven高级_第15张图片

删除要拆分模块的pojo包

maven高级_第16张图片

项目报错:

maven高级_第17张图片

引入 tlias-pojo模块: maven高级_第18张图片

    
        
            com.sde
            tlias-pojo
            1.0-SNAPSHOT
        

现在就不报错了

maven高级_第19张图片

把要拆分工程的utils包,也拆分开。

创建新的tlias-utils新模块

maven高级_第20张图片

重复上面的步骤,创建com.sde.utils包,把要拆分工程utis包下的类,复制到tlias-utils模块下的utils包。

maven高级_第21张图片

引入依赖:

maven高级_第22张图片

引入好依赖,就不报错了。

然后,把父工程中的com.sde.utils包删除,引用tilas-utils模块下的utils包

maven高级_第23张图片

引入依赖。

maven高级_第24张图片

现在就不报错了。

maven高级_第25张图片

启动项目测试:

maven高级_第26张图片

    注意:

  •  分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分
  • 因为这次我们是为了演示拆分,后面写项目肯定是先设计好,才写代码的。

继承与聚合:

maven高级_第27张图片
    继承:

maven高级_第28张图片


            概念:


继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。

            作用:


简化依赖配置、统一管理依赖


            实现:


 

            java中打包方式:

  •  jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
  •  war:普通web程序打包,需要部署在外部的tomcat服务器中运行
  •  pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理

            实现步骤:


①. 创建maven模块tlias-parent,该工程为父工程,设置打包方式pom(默认jar)。

②. 在子工程的pom.xml文件中,配置继承关系。

③. 在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)。

1,新建tlias-parent模块作为父工程,把父工程的打包方式设置为pom: 

     maven高级_第29张图片

父工程添加spring boot的父依赖。

maven高级_第30张图片

其他三个子工程,tlias-utils和tlias-pojo和tlias-mangement继承父工程(tlias-parent)

在tlias-pojo引入父工程依赖。

maven高级_第31张图片

引入后:

maven高级_第32张图片

在tlias-utils模块中,引入父工程依赖。

maven高级_第33张图片

在tlias-management子工程中,引入tilas-parent依赖。

maven高级_第34张图片

把,子工程中共有的依赖,提取到父工程,然后删除,子工程中共有的依赖。

先删了 tlias-pojo里面的。

maven高级_第35张图片

删除tlias-utils子工程里面的。

maven高级_第36张图片

删除tlias-management子工程里面的依赖。

maven高级_第37张图片

由于我们的三个子工程依赖了,父工程tlias-parent。所以我们在右侧的maven中,看看三个子工程中是否有,父工程中的依赖。

maven高级_第38张图片

 版本锁定:

在maven中,可以在父工程的pom文件中通过 来统一管理依赖版本。

maven高级_第39张图片

 注意:子工程引入依赖时,无需指定 版本号,父工程统一管理。变更依赖版本,只需在父工程中统一变更。

maven高级_第40张图片

            自定义属性/引用属性

maven高级_第41张图片

  • 1,在父工程引入dependcyManagement标签,进行版本管理,里面填写我要进行集中依赖。
  • 2,父工程里面的properties标签中,定义需要进行版本管理的依赖。里面填写的是我定义此依赖的版本号。
  • 在dependcyManagement标签中,替换掉版本号(用properties标签中定义的版本号)
  • 在dependencis标签中,引入需要的依赖,版本号,引用定义在properties标签中的。

        maven高级_第42张图片

代码: 

    
        21
        21
        UTF-8

        3.2.0
        1.18.30
        0.9.0
        3.15.1
        2.3.1
        1.1.1
        2.3.3
    

使用dependcyManagement:

maven高级_第43张图片

代码:


    
        
            
            
                io.jsonwebtoken
                jjwt
              ${jwt.version}
            
            
            
                com.aliyun.oss
                aliyun-sdk-oss
                ${aliyun.sdk.oos.version}
            
            
            
                javax.xml.bind
                jaxb-api
                ${jaxb.api.version}
            
            
                javax.activation
                activation
                ${activation.version}
            
            
            
                org.glassfish.jaxb
                jaxb-runtime
                ${javaxb.runtime.version}
            
        
    

在父工程 dependcies标签中,引入需要传递的依赖。

maven高级_第44张图片

    
    
        
        
            org.projectlombok
            lombok
            ${lombok.version}
        
        
        
            org.springframework.boot
            spring-boot-starter
            ${springboot.version}
        
    

总体预览:

 maven高级_第45张图片

父工程pom的整体代码:



    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        3.1.6
         
    

    com.sde
    tlias-parent
    1.0-SNAPSHOT
    pom

    
        21
        21
        UTF-8
        
        3.2.0
        1.18.30
        0.9.0
        3.15.1
        2.3.1
        1.1.1
        2.3.3
    

    
    
        
        
            org.projectlombok
            lombok
            ${lombok.version}
        
        
        
            org.springframework.boot
            spring-boot-starter
            ${springboot.version}
        
    

    
    
        
            
            
                io.jsonwebtoken
                jjwt
                ${jwt.version}
            
            
            
                com.aliyun.oss
                aliyun-sdk-oss
                ${aliyun.sdk.oos.version}
            
            
            
                javax.xml.bind
                jaxb-api
                ${jaxb.api.version}
            
            
                javax.activation
                activation
                ${activation.version}
            
            
            
                org.glassfish.jaxb
                jaxb-runtime
                ${javaxb.runtime.version}
            
        
    



把子工程的依赖版本号去掉:

maven高级_第46张图片

测试:

我就以jwt令牌为例,测试。改变版本号,子工程里面依赖的版本号是否会变化。

            maven高级_第47张图片

现在把jwt令牌改成0.9.1测试看效果:

可以发现所有的jwt令牌,版本全都变成0.9.1

maven高级_第48张图片

我在把jwt令牌,的版本改成 0.9.0 看看其他子工程是否有变化。

maven高级_第49张图片

启动测试:

maven高级_第50张图片

dependcies和dependcyManagement的区别:

  •   是直接依赖,在父工程配置了依赖,子工程会直接继承下来。
  • 是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

    聚合:

maven高级_第51张图片

 创建tlias-parent父工程:

 由于父工程,只存在pom文件即可。把其他的src目录删掉即可。

maven高级_第52张图片

加入我们要打包,tlias-management此模块, 但是我们发现每次打包packing都会报错,原因是我们在此pom文件中,引用了tlias-pojo模块,tlias-utils模块,这些文件。在我们的本地仓库都没有,所有就报错了。解决办法还需要先把引用到的模块先install,安装到本地仓库。

maven高级_第53张图片
测试非聚合打包:

1,禁用单元测试:

maven高级_第54张图片

2,在tlias-management工程中点击打包(packing)。

 maven高级_第55张图片

可以发现,无法正常打包,我们需要把tlias-pojo和tlias-utils先install安装到本地才可以。

先安装tlias-pojo模块。

 maven高级_第56张图片

看看我们本地的maven仓库有没有,多的tlias-pojo包。

 maven高级_第57张图片

我们在测试tlias-management的打包。

可以看到还是打包失败了。

 maven高级_第58张图片

tlias-utils模块进行install安装。

 maven高级_第59张图片

把我们的父工程tlias-parent也安装到本地:

 maven高级_第60张图片

在我本地的maven仓库查看:

 maven高级_第61张图片点击测试打包tlias-management工程:

maven高级_第62张图片

打包成功了 

maven高级_第63张图片

        聚合:

将多个模块组织成一个整体,同时进行项目的构建。

        聚合工程:

不具有业务功能的“空”工程(有且仅有一个pom文件)

就是父工程里面之后一个pom.xml配置文件 


        作用:

快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)

可以发现,我们使用这种继承各个模块 ,要是想打包显得很麻烦,所以我们需要使用聚合工程。

maven高级_第64张图片

maven中可以通过 设置当前聚合工程所包含的子模块名称。

这是在父工程里面添加的。

 maven高级_第65张图片

代码:


    
        ../tilas-management
        ../tlias-pojo
        ../tlias-utils
    

效果:

maven高级_第66张图片

我们在继承的时候,交父工程,在聚合的时候交聚合工程。

maven高级_第67张图片

            注意:


聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

现在我们把我们本地的maven仓库,刚刚安装(install)好的,那三个文件删除。在对tlias-management进行打包。

maven高级_第68张图片

删除后:

maven高级_第69张图片

前面已经看到,聚合之后,其他三个子工程已经归属到,tlias-paretn工程下了,所以我们点击此模块的package:

 maven高级_第70张图片

点击打包: 

在idea查看效果:

maven高级_第71张图片

maven高级_第72张图片


私服:


    介绍:


        私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题
 

maven高级_第73张图片

依赖查找顺序:
  • 本地仓库
  • 私服
  • 中央仓库 
资源上传与下载:
项目版本:
  • RELEASE(发行版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
  • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中 

maven高级_第74张图片
资源上传和下载的步骤:
  • 1,设置私服的访问用户名/密码。maven中conf文件夹下的(settings.xml中的servers中配置)。
  • 2,在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)。
  • 3,需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用。
  • 4,如果要把项目上传到自己的私服,需要在pom.xml文件中增加如下配置,来配置项目发布的地址(也就是私服的地址)

1,在setting.xml配置文件中配置:

maven高级_第75张图片

  
    
      
        maven-releases
        admin
        admin
      
        
      
        maven-snapshots
        admin
        admin
      

    
  

2,在maven的settings.xml文件中的,mirrors标签中配置。

maven高级_第76张图片

maven高级_第77张图片


	 
  

    
      maven-public
      *
      http://localhost:8081/repository/maven-public/
    

3,在maven的settings.cml配置文件中的profiles标签里面,指定快照版本依赖。

maven高级_第78张图片

maven高级_第79张图片


    
        allow-snapshots
        
          true
        
    
        
            maven-public
            http://localhost:8081/repository/maven-public/
            
              true
            
            
              true
            
        
    



  

回到idea重新加载一下:

maven高级_第80张图片

在父工程的pom.xml文件中配置:

maven高级_第81张图片

maven高级_第82张图片

   
        
        
            maven-releases
            http://localhost:8081/repository/maven-releases/
        

        
        
            maven-snapshots
            http://localhost:8081/repository/maven-snapshots/
        
    

在我们的maven中,通过deploy生命周期(发布即可),跳过单元测试。

maven高级_第83张图片

点击:tlias-parent父工程的deploy,进行上传:

maven高级_第84张图片

上传成功后,在我们自己的私服查看。

maven高级_第85张图片

进入到快照版本后,就能看到了。

maven高级_第86张图片

本地maven仓库也能看到:

maven高级_第87张图片

我们在本地maven仓库删掉,这三个tilas-开头的文件,看看私服会变化吗?

maven高级_第88张图片

在浏览器刷新一下:maven-snapshots快照版本

maven高级_第89张图片

查看:maven-public:

maven高级_第90张图片

更改快照版本,上传到发行版本: 

刚刚我们上传的,为啥上传到了 maven-snapshots(快照版了呢)

查看tlias-parent的pom文件可知 

  • 我们默认的版本就是,SNAPSHOT(快照版)
  • 我们要想上传到发行版,把这些版本后缀改成 RELEASE(发行版)
maven高级_第91张图片

改成发行版,在测试一次。

要把父子工程里面的所有,版本从snapshot(快照版),改成release(发行版)

修改tlias-parent模块的版本:

maven高级_第92张图片

修改tlias-mangement的发行版本:

maven高级_第93张图片

我们发现,tlias-management工程下,引用了,tlias-pojo和tlias-utils两个模块。

maven高级_第94张图片

修改:tlias-pojo模块

maven高级_第95张图片

修改tlias-utils模块:

maven高级_第96张图片

在回过头来看tlias-management工程引入的tlias-pojo和tlias-utils是否报错:

 maven高级_第97张图片

在父工程下,点解 deploy开始上传。这次是上传到maven-release(发行版)

 maven高级_第98张图片

上传成功后,刷新浏览器地址栏查看。

maven高级_第99张图片

查看我们maven的本地仓库:

maven高级_第100张图片

nexus私服的使用:

Nexus是一个用于管理和分发软件包的开源仓库管理器。它提供了一个集中化的存储库,可以用来存储和共享各种类型的软件包,包括Java库、Docker镜像、Maven构建等。

1,先解压,nexus压缩包:

maven高级_第101张图片 2,点击 bin目录里面的start.bat启动:

maven高级_第102张图片

3,启动时间可以会很长,

maven高级_第103张图片

4,在浏览器地址栏,输入 nexus的访问地址:http://localhost:8081

maven高级_第104张图片

登录测试:

我先输入 用户:admin 密码:111111 (进行错误测试)

maven高级_第105张图片

在输入正确的账号和密码进行测试:

maven高级_第106张图片

查看登录之后的效果:

maven高级_第107张图片

查看控制台:

maven高级_第108张图片

上传完成后,记得要把我们maven的settings.xml配置文件里面的东西删掉或者注释掉

1,添加在 servers标签里的 配置私服的个人凭证

2,配置在mirrors里面我们私服的连接地址(记得把阿里云私服打开)

3,配置在profiles里面的指定快照版本的依赖

4,还有我刚刚演示的tlias-parent里面的pom文件(上传到我们自己私服的)

1,注释servers标签里面的:

maven高级_第109张图片

2,注释mirrors标签里的:

maven高级_第110张图片

注释掉,profiles:

maven高级_第111张图片

然后开idea,重新加载。

maven高级_第112张图片

在tlias-parent的pom文件里面,注释。

maven高级_第113张图片

刷新maven,重启项目。

​​​​​​​maven高级_第114张图片

你可能感兴趣的:(java技术成才之路,开发工具,maven,python,java,spring,boot)