
分模块设计与开发分模块设计策略这里我们采用策略一进行演示步骤一创建tilas-pojo这里我们不需要选择springboot框架因为我们的实体类不需要进行什么框架操作这里我们要引入lombok的依赖(缺什么依赖引入什么依赖注入依赖版本一致)但这里由于我们采用的并不是SpringBoot框架所以引入依赖版本号不可省略Spring Boot 可以省略版本号是因为它引入了「父工程」spring-boot-starter-parent里面已经统一声明了常用依赖的版本。这就是所谓的「依赖版本仲裁」。tlias-utils这个模块的创建同样如此这里有的时候引入依赖IDEA可能不识别剪切重新粘贴一遍即可步骤二在tlias-web-management中引入如上两模块的依赖继承parent工程之间的依赖关系继承便于维护和管理我们的依赖我们使用parent这个标签来指明工程与工程之间的依赖关系对于我们本次项目的依赖关系如下Maven打包方式jar普通模块打包springboot项目基本都是jar包内嵌tomcat运行war普通web程序打包需要部署在外部的tomcat服务器中运行pom父工程或聚合工程该模块不写代码仅进行依赖管理1.实现1). 创建maven模块 tlias-parent 该工程为父工程设置打包方式pom(默认jar)。src则直接删掉父工程tlias-parent的pom.xml文件配置如下并设置packaging类型为pompackagingpom/packaging parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.2.5/version relativePath/ /parent groupIdcom.itheima/groupId artifactIdtilas-parent/artifactId version1.0-SNAPSHOT/version2). 在子工程tlias-pojo、tlias-utils、tlias-web-management的pom.xml文件中配置继承关系tlias-web-management和tlias-pojo把原本的springboot的parent依赖删除掉即可注意在子工程中配置了继承关系之后坐标中的groupId和version是可以省略的因为会自动继承父工程的 。parent groupIdcom.itheima/groupId artifactIdtilas-parent/artifactId version1.0-SNAPSHOT/versionrelativePath../tilas-parent/relativePath/parent artifactIdtilas-web-management/artifactId这里路径要设置为相对路径即../父工程模块名3). 在父工程中配置各个工程共有的依赖子工程会自动继承父工程的依赖dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /dependency /dependencies2.版本锁定dependencyManagement如果项目拆分的模块比较多每一次更换版本我们都得找到这个项目中的每一个模块一个一个的更改。 很容易就会出现遗漏掉一个模块忘记更换版本的情况。在maven中可以在父工程的pom文件中通过 dependencyManagement 来统一管理依赖版本。在父工程中配置!--统一管理依赖版本-- dependencyManagement dependencies !--JWT令牌-- dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt/artifactId version0.9.1/version /dependency /dependencies /dependencyManagement之后子工程便可以省略version的配置接下来我们就可以将tlias-utils模块中单独配置的依赖将其版本统一交给tlias-parent进行统一管理。!--统一管理依赖版本-- dependencyManagement dependencies !--阿里云OSS-- dependency groupIdcom.aliyun.oss/groupId artifactIdaliyun-sdk-oss/artifactId version3.15.1/version /dependency dependency groupIdjavax.xml.bind/groupId artifactIdjaxb-api/artifactId version2.3.1/version /dependency dependency groupIdjavax.activation/groupId artifactIdactivation/artifactId version1.1.1/version /dependency !-- no more than 2.3.3-- dependency groupIdorg.glassfish.jaxb/groupId artifactIdjaxb-runtime/artifactId version2.3.3/version /dependency !--JWT-- dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt/artifactId version0.9.1/version /dependency /dependencies /dependencyManagement同样的删除子工程的版本标签3.属性配置我们也可以通过自定义属性及属性引用的形式在父工程中将依赖的版本号进行集中管理维护。 具体语法为1). 自定义属性propertieslombok.version1.18.30/lombok.version /properties2). 引用属性dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version${lombok.version}/version /dependency面试题dependencyManagement与dependencies的区别是什么?dependencies是直接依赖在父工程配置了依赖子工程会直接继承下来。dependencyManagement是统一管理依赖版本不会直接依赖还需要在子工程中引入所需依赖(无需指定版本)聚合modules聚合将多个模块组织成一个整体同时进行项目的构建。聚合工程一个不具有业务功能的“空”工程有且仅有一个pom文件 【PS一般来说继承关系中的父工程与聚合关系中的聚合工程是同一个】作用快速构建项目无需根据依赖关系手动构建直接在聚合工程上构建即可这里我们直接在父工程配置modules标签即可modules module../tilas-pojo/module module../tilas-utils/module module../tilas-web-management/module /modules继承与聚合对比作用聚合用于快速构建项目继承用于简化依赖配置、统一管理依赖相同点聚合与继承的pom.xml文件打包方式均为pom通常将两种关系制作到同一个pom文件中聚合与继承均属于设计型模块并无实际的模块内容不同点聚合是在聚合工程中配置关系聚合可以感知到参与聚合的模块有哪些继承是在子模块中配置关系父模块无法感知哪些子模块继承了自己私服1.介绍私服是一种特殊的远程仓库它是架设在局域网内的仓库服务用来代理位于外部的中央仓库用于解决团队内部的资源共享与资源同步问题。依赖查找顺序本地仓库私服仓库中央仓库注意事项私服在企业项目开发中一个项目/公司只需要一台即可无需我们自己搭建会使用即可。2.资源上传与下载资源上传与下载我们需要做三步配置执行一条指令。第一步配置在maven的配置文件中配置访问私服仓库的用户名、密码。第二步配置在项目的pom.xml文件中配置上传到私服的仓库(url地址)该配置其实也支持配在setting.xml中第三步配置在maven的配置文件中配置私服从公共仓库拉回来的依赖存放的仓库(url地址)。配置好了上述三步之后要上传资源到私服仓库就执行maven生命周期deploy。简单来说就是在pom文件中配置上传的私服仓库地址在maven的文件中进行配置私服用户名和密码以及下载的地址私服仓库说明RELEASE存储自己开发的RELEASE发布版本的资源。SNAPSHOT存储自己开发的SNAPSHOT发布版本的资源。Central存储的是从中央仓库下载下来的依赖。项目版本说明RELEASE(发布版本)功能趋于稳定、当前更新停止可以用于发行的版本存储在私服中的RELEASE仓库中。SNAPSHOT(快照版本)功能不稳定、尚处于开发中的版本即快照版本存储在私服的SNAPSHOT仓库中。具体操作1.设置私服的访问用户名/密码在自己maven安装目录下的conf/settings.xml中的servers中配置serveridmaven-releases/idusernameadmin/usernamepasswordadmin/password/serverserveridmaven-snapshots/idusernameadmin/usernamepasswordadmin/password/server!--如果不涉及到下载的可以不配置这个--serveridmaven-public/idusernameadmin/usernamepasswordadmin/password/server2.设置从公共仓库拉回来的依赖存放的仓库(在自己maven安装目录下的conf/settings.xml中的mirrors、profiles中配置mirrors配置mirroridmaven-public/idmirrorOf*/mirrorOfurlhttp://localhost:8081/repository/maven-public//url/mirrorprofiles配置profileidallow-snapshots/idactivationactiveByDefaulttrue/activeByDefault/activationrepositoriesrepositoryidmaven-public/idurlhttp://localhost:8081/repository/maven-public//urlreleasesenabledtrue/enabled/releasessnapshotsenabledtrue/enabled/snapshots/repository/repositories/profile3.IDEA的maven工程的pom文件中配置上传发布地址(直接在tlias-parent中配置发布地址)distributionManagement!-- release版本的发布地址 --repositoryidmaven-releases/idurlhttp://localhost:8081/repository/maven-releases//url/repository!-- snapshot版本的发布地址 --snapshotRepositoryidmaven-snapshots/idurlhttp://localhost:8081/repository/maven-snapshots//url/snapshotRepository/distributionManagement配置完成之后我们就可以在tlias-parent中执行deploy生命周期将项目发布到私服仓库中。中央仓库的包私服会缓存到自己的代理仓库如 maven-central同时也会下载到你电脑的本地仓库。公司自己的包私服存到 release/snapshot 仓库也可能会下载到本地仓库。两者都会到本地但私服里也都会有一份自己的包在 release/snapshot中央的包在代理仓库。