[JavaWeb]【十四】web后端开发-MAVEN高级

目录

一、分模块设计与开发

1.1 分模块设计

 1.2 分模块设计-实践​编辑

1.2.1 复制老项目改为spring-boot-management

1.2.2 新建maven模块runa-pojo

1.2.2.1 将原项目pojo复制到runa-pojo模块

 1.2.2.2 runa-pojo引入新依赖

1.2.2.3 删除原项目pojo包

1.2.2.4 在spring-boot-management(原项目)引入runa-pojo依赖

1.2.3 新建maven模块runa-utils

 1.2.3.1 将原项目utils复制到runa-utils模块

 1.2.3.2 runa-utils引入依赖

1.2.3.3 spring-boot-management删除依赖

1.2.3.4 删除原项目utils包

1.2.3.5 在spring-boot-management(原项目)引入runa-utils依赖

 1.2.4 启动服务-测试

 1.3 总结

二、继承与聚合

2.1 继承

 2.1.1 新建父工程模块runa-parent

 2.1.2 设置runa-parent打包方式为pom

2.1.3 设置runa-parent父工程未springboot

2.1.4 删除 runa-parent的src

2.1.5 修改spring-boot-management父工程为runa-parent

2.1.6 删除 spring-boot-management提示异常的标签

 2.1.7 在runa-pojo与runa-utils设置父工程和删除

2.1.8 在父工程runa-parent配置共有依赖

2.2 继承实现总结 

 2.3 版本锁定

 2.3.1 将runa-parent管理版本(子工程)

2.3.2 runa-utils依赖版本删除

2.3.3 自定义属性 

 2.3.3.1 runa-parent设置版本

2.3.3.2 总结

 2.2 聚合

 2.2.1 runa-parent添加

 2.2.2 runa-parent maven生命周期进行打包等

2.3 总结

三、私服

3.1 介绍

3.2 资源上传与下载

3.3 私服配置

3.3.1 需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)

3.3.2 在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)

3.3.3 需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用

3.3.4 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)

3.3.5 发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)

3.3.6 启动本地私服

3.4 上传maven生命周期-deploy

3.5 下载


前言:

分模块设计开发是一种软件开发方法论,它将一个大型的软件系统按照不同的功能模块进行划分,每个模块独立设计、独立开发、独立测试、独立部署和独立维护。这有助于降低整个系统的复杂度,提高系统的可维护性和可扩展性。

分模块设计开发一般包含以下步骤:

1. 确定系统的功能模块:将整个系统划分成多个不同的功能模块,如登录模块、订单模块、支付模块等。

2. 设计每个模块的接口:在每个模块内部,设计该模块与其他模块的接口,包括输入输出参数、数据结构等。

3. 各个模块的独立开发:分别对每个模块进行独立的开发,每个开发人员只负责一个模块。

4. 集成测试:在开发完成后,对各个模块进行集成测试,测试各个模块之间的接口是否正常,是否能够协同工作。

5. 系统测试:对整个系统进行测试,模拟实际运行环境下的各种场景,保证系统整体的稳定性和可用性。

6. 部署上线:将整个系统部署到线上环境中,进行实际的运行。

分模块设计开发的优点:

1. 降低系统复杂度:将整个系统分模块开发,让开发人员专注于模块间的关系和模块内的逻辑,从而降低系统复杂度。

2. 提高可维护性:每个模块独立开发,修改某个模块不影响其他模块的使用,方便维护和升级。

3. 提高可扩展性:如果需要增加新的功能,只需要增加一个新的模块,不会影响到其他模块的运行。

4. 提高开发效率:多个开发人员可以并行开发不同的模块,加快开发进度。

一、分模块设计与开发

1.1 分模块设计

 

 1.2 分模块设计-实践

 

1.2.1 复制老项目改为spring-boot-management

新建文件夹spring_boot_project01

将之前方面复制过来改成 spring-boot-management

打开项目spring-boot-management 使用Rename 修改启动类等

1.2.2 新建maven模块runa-pojo

 

1.2.2.1 将原项目pojo复制到runa-pojo模块

 1.2.2.2 runa-pojo引入新依赖
  <!--       lombok  -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
1.2.2.3 删除原项目pojo包

1.2.2.4 在spring-boot-management(原项目)引入runa-pojo依赖
        <dependency>
            <groupId>com.runa</groupId>
            <artifactId>runa-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

1.2.3 新建maven模块runa-utils

 

 1.2.3.1 将原项目utils复制到runa-utils模块

 1.2.3.2 runa-utils引入依赖
    <!--JWT令牌-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>


     <!--        阿里云OSS依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- no more than 2.3.3-->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.3</version>
        </dependency>
        <!--        web  起步依赖  -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>3.1.2</version>
    </dependency>
    <!--       lombok  -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
1.2.3.3 spring-boot-management删除依赖
    <!--JWT令牌-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>


     <!--        阿里云OSS依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- no more than 2.3.3-->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.3</version>
        </dependency>
1.2.3.4 删除原项目utils包

1.2.3.5 在spring-boot-management(原项目)引入runa-utils依赖
        <dependency>
            <groupId>com.runa</groupId>
            <artifactId>runa-utils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

 1.2.4 启动服务-测试

 

 1.3 总结

二、继承与聚合

2.1 继承

 

 

 2.1.1 新建父工程模块runa-parent

 

 

 2.1.2 设置runa-parent打包方式为pom

<packaging>pom</packaging>

2.1.3 设置runa-parent父工程未springboot

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

2.1.4 删除 runa-parent的src

2.1.5 修改spring-boot-management父工程为runa-parent

 <parent>
        <groupId>com.runa</groupId>
        <artifactId>runa-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../runa-parent/pom.xml</relativePath>
    </parent>
    

2.1.6 删除 spring-boot-management提示异常的标签

<groupId>com.runa</groupId>

 

 2.1.7 在runa-pojo与runa-utils设置父工程和删除<groupId>

2.1.8 在父工程runa-parent配置共有依赖

将子工程共有的依赖剪切到父工程

2.2 继承实现总结 

 

 

 

 2.3 版本锁定

 2.3.1 将runa-parent管理版本(子工程)

 <!--  统一管理版本标签-->
  <dependencyManagement>
    <dependencies>
      <!--JWT令牌-->
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
      </dependency>
      <!--        阿里云OSS依赖-->
      <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.15.1</version>
      </dependency>
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
      </dependency>
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
      </dependency>
      <!-- no more than 2.3.3-->
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.3</version>
      </dependency>
      <!--        web  起步依赖  -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>3.1.2</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

2.3.2 runa-utils依赖版本删除

 <dependencies>

    <!--JWT令牌-->
    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>      
    </dependency>
    <!--        阿里云OSS依赖-->
    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>    
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>   
    </dependency>
    <dependency>
      <groupId>javax.activation</groupId>
      <artifactId>activation</artifactId>      
    </dependency>
    <!-- no more than 2.3.3-->
    <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>jaxb-runtime</artifactId>   
    </dependency>
    <!--        web  起步依赖  -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>     
    </dependency>


  </dependencies>

2.3.3 自定义属性 

 

 2.3.3.1 runa-parent设置版本
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <lombok.version>1.18.24</lombok.version>
  </properties>
  <!--       lombok  -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
    </dependency>

 其他依次设置

<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.2</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.runa</groupId>
  <artifactId>runa-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>runa-parent</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <lombok.version>1.18.24</lombok.version>
    <jjwt.version>0.9.1</jjwt.version>
    <aliyun.oss.version>3.15.1</aliyun.oss.version>
    <jaxb.version>2.3.1</jaxb.version>
    <activation.version>1.1.1</activation.version>
    <jaxb.runtime.version>2.3.3</jaxb.runtime.version>
<!--    他好像不需要版本管理 因为他是spring-boot,runa-parent本身就是继承springboot-->
    <spring-boot-starter-web>3.1.2</spring-boot-starter-web> 
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <!--       lombok  -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
    </dependency>
  </dependencies>

      <!--  统一管理版本标签-->
  <dependencyManagement>
    <dependencies>
      <!--JWT令牌-->
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>${jjwt.version}</version>
      </dependency>
      <!--        阿里云OSS依赖-->
      <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>${aliyun.oss.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${jaxb.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>${jaxb.runtime.version}</version>
      </dependency>
      <!--        web  起步依赖  -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
<!--        下面这个都可以删除-->
        <version>${spring-boot-starter-web}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

</project>
2.3.3.2 总结

 2.2 聚合

 

 2.2.1 runa-parent添加

<!--  聚合其他模块-->
  <modules>
    <module>../runa-pojo</module>
    <module>../runa-utils</module>
    <module>../spring-boot-management</module>

  </modules>

<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.2</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.runa</groupId>
  <artifactId>runa-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

<!--  聚合其他模块-->
  <modules>
    <module>../runa-pojo</module>
    <module>../runa-utils</module>
    <module>../spring-boot-management</module>

  </modules>


  <name>runa-parent</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <lombok.version>1.18.24</lombok.version>
    <jjwt.version>0.9.1</jjwt.version>
    <aliyun.oss.version>3.15.1</aliyun.oss.version>
    <jaxb.version>2.3.1</jaxb.version>
    <activation.version>1.1.1</activation.version>
    <jaxb.runtime.version>2.3.3</jaxb.runtime.version>
<!--    他好像不需要版本管理 因为他是spring-boot,runa-parent本身就是继承springboot-->
    <spring-boot-starter-web>3.1.2</spring-boot-starter-web>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <!--       lombok  -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
    </dependency>
  </dependencies>

      <!--  统一管理版本标签-->
  <dependencyManagement>
    <dependencies>
      <!--JWT令牌-->
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>${jjwt.version}</version>
      </dependency>
      <!--        阿里云OSS依赖-->
      <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>${aliyun.oss.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${jaxb.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>${jaxb.runtime.version}</version>
      </dependency>
      <!--        web  起步依赖  -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
<!--        下面这个都可以删除-->
        <version>${spring-boot-starter-web}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

</project>

 2.2.2 runa-parent maven生命周期进行打包等

2.3 总结

三、私服

3.1 介绍

3.2 资源上传与下载

 

 

 

3.3 私服配置

 私服配置说明

访问私服:http://192.168.150.101:8081

访问密码:admin/admin

下载地址

使用私服,需要在maven的settings.xml配置文件中,做如下配置:

3.3.1 需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)

<server>
    <id>maven-releases</id>
    <username>admin</username>
    <password>admin</password>
</server>
    
<server>
    <id>maven-snapshots</id>
    <username>admin</username>
    <password>admin</password>
</server>

3.3.2 在 mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)

<mirror>
    <id>maven-public</id>
    <mirrorOf>*</mirrorOf>
    <url>http://192.168.150.101:8081/repository/maven-public/</url>
</mirror>

3.3.3 需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用

<profile>
    <id>allow-snapshots</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    <repositories>
        <repository>
            <id>maven-public</id>
            <url>http://192.168.150.101:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>

3.3.4 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)

<distributionManagement>
    <!-- release版本的发布地址 -->
    <repository>
        <id>maven-releases</id>
        <url>http://192.168.150.101:8081/repository/maven-releases/</url>
    </repository>
    
    <!-- snapshot版本的发布地址 -->
    <snapshotRepository>
        <id>maven-snapshots</id>
        <url>http://192.168.150.101:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

3.3.5 发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)

3.3.6 启动本地私服

1、解压: apache-maven-nexus.zip

2、进入目录: apache-maven-nexus\nexus-3.39.0-01\bin   #(注意解压不要有中文路径)

3、启动服务:双击 start.bat

4、访问服务:localhost:8081

5、私服配置说明:将上述配置私服信息的 192.168.150.101 改为 localhost

3.4 上传maven生命周期-deploy

 

3.5 下载

新项目配置依赖

 要验证下载,先将本地仓库的删除掉

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值