🥘父子项目搭建
新建SpringBoot项目(父项目scm)
下一步
完成
修改pom.xml
<?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 https://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>2.7.4</version>
<relativePath/>
</parent>
<groupId>com.moming</groupId>
<artifactId>scm</artifactId>
<!--版本号可自定义-->
<version>14-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
</build>
</project>
接下来在父项目下创建子项目
修改scm-authority/pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.moming</groupId>
<artifactId>scm</artifactId>
<version>14-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>scm-authority</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
同理创建其他子项目scm-api、scm-app、scm-core、scm-dao、scm-dto、scm-entity、scm-service等步骤一致
最后修改父模块的pom.xml
<?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 https://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>2.7.4</version>
<relativePath/>
</parent>
<groupId>com.moming</groupId>
<artifactId>scm-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<modules>
<module>scm-authority</module>
<module>scm-app</module>
<module>scm-dao</module>
<module>scm-dto</module>
<module>scm-entity</module>
<module>scm-service</module>
<module>scm-api</module>
<module>scm-core</module>
</modules>
<dependencyManagement>
<dependencies>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
</pluginManagement>
</build>
</project>
以上就是父子项目搭建的基本步骤
补充
<version>0.0.1-SNAPSHOT</version>这里的版本号可以自定义
子模块继承的版本号要与父模块的版本号保持一致
比如父模块用的14-SNAPSHOT,所有子模块都是14-SNAPSHOT
🍣子模块补充
既然是多模块结构,那么子模块中有些东西是不需要的,这里做一些修改,将除了scm-app模块的,其他模块src包下的单元测试test、java包下的启动类、pom.xml里的dependency依赖、plugins插件都删掉,其他就看个人需求进行修改了,只需要保留一个启动类就行
各个模块的大概作用:
scm-api
• 暴露的接口
scm-app
• 项目的启动模块,包括controller,aop,advice等
scm-authority
• 组件模块,比如一些自定义的starter
scm-core
• 基础工具模块,放一些核心工具类
scm-dao
• 数据访问模块,放一些dao或者mapper
scm-dto
• 暴露的对象,和外部打交道的对象
scm-entity
• 内部的,和数据库打交道的对象
scm-service
• 业务处理模块,进行主要的逻辑处理
🍱多模块发布到私仓
打开阿里的云效控制台,创建企业私仓
注册账号登录,在创建企业时需要实名认证,可按照要求进行支付包授权认证,比较快
打开制品仓库/Maven仓库/非生产库-snapshot
选择仓库指南/Maven方式/推送(覆盖方式)
下载settings.xml
将settings.xml放到C:\Users\ASUS\.m2下(ASUS或者Administrator)或者IDEA配置的maven下conf/settings.xml
与IDEA中maven配置对应
c盘默认或者maven文件夹中
IDEA打开Terminal
输入以下指令,上传项目到私仓
mvn clean deploy -DskipTests
如果发布某一个子模块,那就cd 到对应的文件夹下 执行 mvn clean deploy -DskipTests
如下所示
执行该指令之后,可以看到项目已经上传到库中
点击一个可以查看该模块的信息,包括依赖
当然也可以使用maven插件,比较方便,但是不跳过测试会比较慢
🍛过滤多模块发布到私仓
子模块跳过deploy
子模块pom.xml添加配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
在上传父子项目时,有些子项目不需要上传即可通过此配置跳过上传(比如scm-dao,scm-entity)
忽略递归子模块,只发布父项目
mvn clean package deploy -N -DskipTests
只发布具体子模块
mvn clean package deploy -DskipTests -pl scm-api,scm-dto
其中 scm-api,scm-dto是模块名称,中间用逗号