当前位置: 首页 > news >正文

Maven模块化开发与设计笔记

1. 模块化开发

模块化开发是将大型应用程序拆分成多个小模块的过程,每个模块负责不同的功能。这有助于降低系统复杂性,提高代码的可维护性和可扩展性。

2. 聚合模块

聚合模块(父模块)用于组织和管理多个子模块。它定义了项目的全局配置,如依赖、插件等,使得子模块可以继承这些配置。

示例代码

父模块 pom.xml

<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>parent-module</artifactId><packaging>pom</packaging><modules><module>module-a</module><module>module-b</module></modules><properties><java.version>1.8</java.version><spring.version>5.3.10</spring.version></properties><dependencyManagement><dependencies><!-- 定义版本号,子模块继承后无需再定义版本号 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

子模块 module-a/pom.xml

<project><parent><groupId>com.example</groupId><artifactId>parent-module</artifactId></parent><modelVersion>4.0.0</modelVersion><artifactId>module-a</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

3. Maven 插件管理

在父模块中定义 <pluginManagement>,子模块可以引用这些插件,而不需要重复定义插件版本。

父模块 pom.xml

<pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.5</version></plugin></plugins>
</pluginManagement>

子模块将自动继承这些插件配置。

4. 自定义属性

在父模块中定义 <properties> 标签,可以在所有子模块中使用这些属性。

父模块 pom.xml

<properties><project.basedir>${project.basedir}</project.basedir>
<properties>

子模块 module-a/pom.xml

<build><resources><resource><directory>${project.basedir}/src/main/resources</directory><filtering>false</filtering></resource></resources>
</build>

5. 版本管理

在父模块中统一管理依赖的版本号。

父模块 pom.xml

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring.version}</version></dependency></dependencies>
</dependencyManagement>

6. 多环境配置

通过定义不同的配置文件,可以适应不同的运行环境。

父模块 pom.xml

<profiles><profile><id>dev</id><properties><active.profile>dev</active.profile></properties></profile>
</profiles>

子模块 application-dev.yml

server:port: 8081
spring:datasource:url: jdbc:mysql://localhost:3306/dev_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false

7. 跳过测试

在 Maven 中,可以通过配置 maven-surefire-plugin 来跳过测试。

父模块 pom.xml

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-sure-plugin</artifactId><configuration><skipTests>true</skipTests></configuration></plugin></plugins>
</build>

8. 私服配置

在 Maven 中配置私服(如 Nexus)可以方便管理依赖和插件。

settings.xml

<servers><server><id>nexus-releases</id><username>admin</username><password>admin123</password></server>
</servers>

pom.xml

<repositories><repository><id>nexus-releases</id><url><http://localhost:8081/nexus/content/repositories/releases/></url></repository>
<repositories>

9. 资源上传

将构建的 JAR 文件上传到私服,可以在 pom.xml 中配置 maven-deploy-plugin 插件。

pom.xml

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><repositoryId>nexus-releases</repositoryId><url><http://localhost:8081/nexus/content/repositories/releases/></url></configuration></plugin></plugins>
</build>

总结

模块化开发和 Maven 的使用可以提高项目的可维护性和可扩展性。通过聚合和继承,可以简化项目的构建和配置管理。同时,Maven 提供的多环境配置、跳过测试、私服配置等功能,使得项目可以更好地适应不同的开发和运行环境。

http://www.lryc.cn/news/606224.html

相关文章:

  • 一起学springAI系列一:初体验
  • 解释 MySQL 中的 EXPLAIN 命令的作用和使用场景
  • 机器学习——互信息(超详细)
  • 机器学习基础-seaborn
  • Mysql超详细安装配置教程(详细图文,保姆级)
  • 大数据之Hive
  • mysql主从搭建(docker)
  • Java设计模式之《命令模式》
  • 【LY88】ubuntu下的常用操作
  • 常用的ROS(Robot Operating System,机器人操作系统)包,用于机器人软件开发的工具和库
  • Prometheus监控多个MySQL及服务器性能:配置指南与最佳实践
  • 【YOLOv1】
  • 使用realsense进行目标检测并标识目标深度
  • 计算机视觉CS231n学习(1)
  • SAM模型细节分析 (附录内容)
  • Nuitka:将源码编译为 `.pyd`
  • YOLOv13 汉化优化部署版本:超图增强自适应视觉感知的目标检测系统
  • 智慧交通中目标检测 mAP↑28%:陌讯多模态融合算法实战解析
  • LLM——使用 LangGraph 构建 ReAct 智能体:多轮对话 + 工具调用 + 可视化流程图
  • 编译Openssl
  • Linux软件包管理器深度解析:从概念到实战
  • PyTorch L2范数详解与应用
  • system.conf linux用于启动和管理系统进程的初始化系统和服务管理器的配置文件
  • MySQL 8.0 OCP 1Z0-908 题目解析(38)
  • NFLSOI 7.25 题解
  • 2025电赛e题:openmv识别过程丢失矩形
  • laravel下phpunit的使用
  • Web开发-PHP应用Cookie脆弱Session固定Token唯一身份验证数据库通讯
  • 分享低功耗单火线开关语音识别方案
  • Python 程序设计讲义(49):组合数据类型——字典类型:字典的方法