分模块设计与开发:
分析:
拆分后的格式:
步骤:
注意:
创建一个新的空工程 web-project4:
空工程jdk的配置:
配置jdk21版本:
打开ideal:
开始拆分:
tlias-pojo模块创建好,的样子。
然后定义 com.sde.pojo包,这个包和未拆分前项目的包路径保持一致。
把要拆分的项目,pojo包下的类赋值到刚刚创建的,新模块 tlias-pojo 的pojo包下
可以发现很多爆红的地方。
在 tlias-pojo模块下的 pom文件里面引入依赖。
<!--引入依赖-->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
在此查看实体类,发现不报错了。
删除要拆分模块的pojo包
项目报错:
引入 tlias-pojo模块:
<!--tlias-pojo-->
<dependency>
<groupId>com.sde</groupId>
<artifactId>tlias-pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
现在就不报错了
把要拆分工程的utils包,也拆分开。
创建新的tlias-utils新模块
重复上面的步骤,创建com.sde.utils包,把要拆分工程utis包下的类,复制到tlias-utils模块下的utils包。
引入依赖:
引入好依赖,就不报错了。
然后,把父工程中的com.sde.utils包删除,引用tilas-utils模块下的utils包
引入依赖。
现在就不报错了。
启动项目测试:
注意:
继承与聚合:

继承:
概念:
作用:
实现:
java中打包方式:
实现步骤:
1,新建tlias-parent模块作为父工程,把父工程的打包方式设置为pom:
父工程添加spring boot的父依赖。
其他三个子工程,tlias-utils和tlias-pojo和tlias-mangement继承父工程(tlias-parent)
在tlias-pojo引入父工程依赖。
引入后:
在tlias-utils模块中,引入父工程依赖。
在tlias-management子工程中,引入tilas-parent依赖。
把,子工程中共有的依赖,提取到父工程,然后删除,子工程中共有的依赖。
先删了 tlias-pojo里面的。
删除tlias-utils子工程里面的。
删除tlias-management子工程里面的依赖。
由于我们的三个子工程依赖了,父工程tlias-parent。所以我们在右侧的maven中,看看三个子工程中是否有,父工程中的依赖。
版本锁定:
自定义属性/引用属性
代码:
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 自定义属性-->
<springboot.version>3.2.0</springboot.version>
<lombok.version>1.18.30</lombok.version>
<jwt.version>0.9.0</jwt.version>
<aliyun.sdk.oos.version>3.15.1</aliyun.sdk.oos.version>
<jaxb.api.version>2.3.1</jaxb.api.version>
<activation.version>1.1.1</activation.version>
<javaxb.runtime.version>2.3.3</javaxb.runtime.version>
</properties>
使用dependcyManagement:
代码:
<!--依赖管理-->
<dependencyManagement>
<dependencies>
<!--jwt-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<!--阿里云oss-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun.sdk.oos.version}</version>
</dependency>
<!-- jdk1.9版本以上需要额外加上面三个依赖-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${activation.version}</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${javaxb.runtime.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
在父工程 dependcies标签中,引入需要传递的依赖。
<!-- 直接依赖 子工程直接引入-->
<dependencies>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!--spring的基础依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${springboot.version}</version>
</dependency>
</dependencies>
总体预览:
父工程pom的整体代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sde</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 自定义属性-->
<springboot.version>3.2.0</springboot.version>
<lombok.version>1.18.30</lombok.version>
<jwt.version>0.9.0</jwt.version>
<aliyun.sdk.oos.version>3.15.1</aliyun.sdk.oos.version>
<jaxb.api.version>2.3.1</jaxb.api.version>
<activation.version>1.1.1</activation.version>
<javaxb.runtime.version>2.3.3</javaxb.runtime.version>
</properties>
<!-- 直接依赖 子工程直接引入-->
<dependencies>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!--spring的基础依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${springboot.version}</version>
</dependency>
</dependencies>
<!--依赖管理-->
<dependencyManagement>
<dependencies>
<!--jwt-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<!--阿里云oss-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun.sdk.oos.version}</version>
</dependency>
<!-- jdk1.9版本以上需要额外加上面三个依赖-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${activation.version}</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${javaxb.runtime.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
把子工程的依赖版本号去掉:
测试:
现在把jwt令牌改成0.9.1测试看效果:
我在把jwt令牌,的版本改成 0.9.0 看看其他子工程是否有变化。
启动测试:
dependcies和dependcyManagement的区别:
聚合:
创建tlias-parent父工程:
由于父工程,只存在pom文件即可。把其他的src目录删掉即可。
测试非聚合打包:
1,禁用单元测试:
2,在tlias-management工程中点击打包(packing)。
可以发现,无法正常打包,我们需要把tlias-pojo和tlias-utils先install安装到本地才可以。
先安装tlias-pojo模块。
看看我们本地的maven仓库有没有,多的tlias-pojo包。
我们在测试tlias-management的打包。
可以看到还是打包失败了。
tlias-utils模块进行install安装。
把我们的父工程tlias-parent也安装到本地:
在我本地的maven仓库查看:
点击测试打包tlias-management工程:
打包成功了
聚合:
聚合工程:
就是父工程里面之后一个pom.xml配置文件

作用:
代码:
<!-- 聚合工程-->
<modules>
<module>../tilas-management</module>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
</modules>
效果:
我们在继承的时候,交父工程,在聚合的时候交聚合工程。
注意:
现在我们把我们本地的maven仓库,刚刚安装(install)好的,那三个文件删除。在对tlias-management进行打包。
删除后:
点击打包:
在idea查看效果:
私服:
介绍:
依赖查找顺序:
资源上传与下载:
项目版本:
资源上传和下载的步骤:
1,在setting.xml配置文件中配置:
<servers>
<!-- server
| Specifies the authentication information to use when connecting to a particular server, identified by
| a unique name within the system (referred to by the 'id' attribute below).
|
| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
| used together.
|
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
-->
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
<!-- Another sample, using keys to authenticate.
<server>
<id>siteServer</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>optional; leave empty if not used.</passphrase>
</server>
-->
</servers>
2,在maven的settings.xml文件中的,mirrors标签中配置。
<mirrors>
<!-- 阿里云仓库 -->
<!-- <mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror> -->
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
3,在maven的settings.cml配置文件中的profiles标签里面,指定快照版本依赖。
<profiles>
<profile>
<id>allow-snapshots</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven-public</id>
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
回到idea重新加载一下:
在父工程的pom.xml文件中配置:
<distributionManagement>
<!-- release版本的发布地址 -->
<repository>
<id>maven-releases</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<!-- snapshot版本的发布地址 -->
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
在我们的maven中,通过deploy生命周期(发布即可),跳过单元测试。
点击:tlias-parent父工程的deploy,进行上传:
上传成功后,在我们自己的私服查看。
进入到快照版本后,就能看到了。
本地maven仓库也能看到:
我们在本地maven仓库删掉,这三个tilas-开头的文件,看看私服会变化吗?
在浏览器刷新一下:maven-snapshots快照版本
查看:maven-public:
更改快照版本,上传到发行版本:
改成发行版,在测试一次。
修改tlias-parent模块的版本:
修改tlias-mangement的发行版本:
我们发现,tlias-management工程下,引用了,tlias-pojo和tlias-utils两个模块。
修改:tlias-pojo模块
修改tlias-utils模块:
在回过头来看tlias-management工程引入的tlias-pojo和tlias-utils是否报错:
在父工程下,点解 deploy开始上传。这次是上传到maven-release(发行版)
上传成功后,刷新浏览器地址栏查看。
查看我们maven的本地仓库:
nexus私服的使用:
1,先解压,nexus压缩包:
2,点击 bin目录里面的start.bat启动:
3,启动时间可以会很长,
4,在浏览器地址栏,输入 nexus的访问地址:http://localhost:8081
登录测试:
我先输入 用户:admin 密码:111111 (进行错误测试)
在输入正确的账号和密码进行测试:
查看登录之后的效果:
查看控制台:
上传完成后,记得要把我们maven的settings.xml配置文件里面的东西删掉或者注释掉
1,注释servers标签里面的:
2,注释mirrors标签里的:
注释掉,profiles:
然后开idea,重新加载。
在tlias-parent的pom文件里面,注释。
刷新maven,重启项目。