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
英文地址,請注明出處:http://en.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;?四、…