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.pswp.cn/pingmian/91904.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs:Less-21关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT * FROM users WHERE username($cookee) LIMIT 0,1";注入类型&#xff1a;字符串型&#xff08;单引号、括号包裹&#xff09;、GET操作提示&#xff1a;参数需以)闭合关键参数&#xff1a;cookee p…

大模型+垂直场景:技术纵深、场景适配与合规治理全景图

大模型垂直场景&#xff1a;技术纵深、场景适配与合规治理全景图​​核心结论​&#xff1a;2025年大模型落地已进入“深水区”&#xff0c;技术价值需通过 ​领域纵深&#xff08;Domain-Deep&#xff09;​、数据闭环&#xff08;Data-Driven&#xff09;​、部署友好&#x…

Kotlin Daemon 简介

Kotlin Daemon 是 Kotlin 编译器的一个后台进程&#xff0c;旨在提高编译性能。它通过保持编译环境的状态来减少每次编译所需的启动时间&#xff0c;从而加快增量编译的速度。 Kotlin Daemon 的主要功能增量编译&#xff1a; 只编译自上次编译以来发生更改的文件&#xff0c;节…

鸿蒙南向开发 编写一个简单子系统

文章目录 前言给设备&#xff0c;编写一个简单子系统总结 一、前言 对于应用层的开发&#xff0c;搞了十几年&#xff0c;其实已经有点开发腻的感觉了&#xff0c;翻来覆去&#xff0c;就是调用api&#xff0c;页面实现&#xff0c;最多就再加个性能优化&#xff0c;但对底层…

超详细:2026年博士申请时间线

博士申请是一场持久战&#xff0c;需要提前规划。那么&#xff0c;如何科学安排2026年博士申请时间线&#xff1f;SCI论文发表的最佳时间节点是什么&#xff1f;今天给所有打算申博的同学们&#xff0c;详细解析下&#xff0c;每个时间节点的重点内容。2025年4月&#xff1a;是…

Python爬虫实战:研究tproxy代理工具,构建电商数据采集系统

1. 引言 1.1 研究背景 在大数据与人工智能技术快速发展的背景下,网络数据已成为企业决策、学术研究、舆情监控的核心资源。据 Statista 统计,2024 年全球互联网数据总量突破 180ZB,其中 80% 为非结构化数据,需通过爬虫技术提取与转化。Python 凭借其简洁语法与丰富的爬虫…

HighgoDB查询慢SQL和阻塞SQL

文章目录环境文档用途详细信息环境 系统平台&#xff1a;N/A 版本&#xff1a;6.0,5.6.5,5.6.4,5.6.3,5.6.1,4.5.2,4.5,4.3.4.9,4.3.4.8,4.3.4.7,4.3.4.6,4.3.4.5,4.3.4.4,4.3.4.3,4.3.4.2,4.3.4,4.7.8,4.7.7,4.7.6,4.7.5,4.3.2 文档用途 本文介绍了如何对数据库日志进行分析…

day15 SPI

1串行外设接口概述1.1基本概念SPI&#xff08;串行外设接口&#xff09;是一种高速、全双工、同步的串行通信协议。串行外设接口一般是需要4根线来进行通信&#xff08;NSS、MISO、MOSI、SCK&#xff09;&#xff0c;但是如果打算实现单向通信&#xff08;最少3根线&#xff09…

阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态

点击此处&#xff0c;了解微服务引擎 MSE 产品详情。

RFID技术在汽车倍速链中的应用:驱动智能制造的隐形引擎

RFID技术在汽车倍速链中的应用&#xff1a;驱动智能制造的隐形引擎某汽车汽车倍速链现场存在问题&#xff1a;&#xff08;1&#xff09;条形码需人工扫描&#xff0c;数据采集延迟率高达15%&#xff0c;导致生产调度与实际工况脱节&#xff1b;&#xff08;2&#xff09;涂装车…

ES集群调优策略

Index(写)调优 副本数置0 如果是集群首次灌入数据,可以将副本数设置为0&#xff0c;写入完毕再调整回去&#xff0c;这样副本分片只需要拷贝&#xff0c;节省了索引过 程。 PUT /my_temp_index/_settings { "number_of_replicas": 0 } 自动生成doc ID  通过Elast…

mysql的安装步骤

安装步骤1.下载软件包&#xff0c;安装依赖环境2.安装mysql服务器3.基础安装路径&#xff0c;创用户&#xff0c;与权限4.初始化5.添加环境变量&#xff0c;把服务放到开机自启里面6.启动mysql服务器7.获取初始密码并且修改一&#xff0c;下载软件&#xff08;yum&#xff0c;源…

Ant Design Vue notification自定义

<script setup> import { onMounted, h, ref, watch, getCurrentInstance } from vue; import { notification, Button } from ant-design-vue; onMounted(() > { const list [{id: 11,warnLevel: 严重,...},...]showMessage(list); }); function showMessage(){ for…

蓝桥杯算法之搜索章 - 2

大家好&#xff0c;接下来&#xff0c;我将带来对于搜索篇的新内容&#xff0c;这部分我将打算围绕DFS深度优先搜索去讲解。 温馨提示&#xff1a;由于这篇文章是接着上一篇文章的&#xff0c;如果新读者没有看过前一篇的话&#xff0c;推荐去看一下&#xff0c;不然有些地方可…

蓝桥杯----AT24C02

&#xff08;5-1&#xff09;、AT24C02掉电不丢失写入与读取AT24C02就是将数据写入E2PROM&#xff0c;保证写入数据掉电不丢失。考频低&#xff0c;一般不考&#xff0c;顶天考几个数据E2PROM&#xff0c;上电立马读取。AT24C02数据读取一定放在主程序最前面&#xff0c;否则会…

【物联网】基于树莓派的物联网开发【19】——树莓派搭建MQTT客户端及MQTTX使用

场景介绍 实现测试客户端与 MQTT 服务器的连接、订阅、取消订阅、收发消息等功能。 MQTT发布消息到代理服务器 安装paho-mqtt 使用pip工具安装paho-mqtt&#xff0c;输入以下指令即可&#xff1a; sudo pip install paho-mqtt安装 MQTT 客户端库 为了方便连接到 MQTT 服务器&am…

5G-A技术浪潮勾勒通信产业新局,微美全息加快以“5.5G+ AI”新势能深化场景应用

7月31日&#xff0c;国家互联网信息办公室发布《国家信息化发展报告》。《报告》中提出&#xff0c;新一代通信技术研发取得新成果&#xff0c;5G-A地空通信&#xff08;5G-ATG&#xff09;技术研发成功并完成测试验证。5G-A技术研发测试验证移动通信技术一般代际生命周期为10年…

SQLite Where 子句详解

SQLite Where 子句详解 SQLite 是一款轻量级的数据库管理系统,广泛应用于移动设备、嵌入式系统以及个人电脑。在 SQLite 中,WHERE 子句是 SQL 查询语句中不可或缺的一部分,它用于指定查询条件,从而筛选出满足特定条件的记录。本文将详细介绍 SQLite 中的 WHERE 子句,包括…

AI IDE+AI 辅助编程-生成的大纲-一般般

引言概述 AI IDE 和 AI 辅助编程的兴起及其对开发效率的影响提出核心问题&#xff1a;AI 工具能否真正帮助程序员减少加班&#xff08;告别 996&#xff09;&#xff1f;AI IDE 与 AI 辅助编程的定义与现状解释 AI IDE&#xff08;集成 AI 的开发环境&#xff09;和 AI 辅助编程…

ABP VNext + Dapr Workflows:轻量级分布式工作流

&#x1f680; ABP VNext Dapr Workflows&#xff1a;轻量级分布式工作流 &#x1f4da; 目录&#x1f680; ABP VNext Dapr Workflows&#xff1a;轻量级分布式工作流一、引言 ✨TL;DR &#x1f525;二、环境与依赖 &#x1f6e0;️三、系统架构与流程图 &#x1f3d7;️四、…