百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

【从零开始搭框架】Maven创建项目 多模块聚合

ccwgpt 2024-11-18 09:30 37 浏览 0 评论

【聚合】类似的多个模块的项目,我们在构建时,会希望一次构建完成,而不是每个模块都执行mvn命令。Maven的聚合特性可是实现此需求。 
【继承】在parent项目中定义一些依赖,可以避免在其它子项目中重复定义,其<packaging>的值也是 pom 

在实际的项目开发中,一个项目都会分成多个模块。以一个基本的admin项目为例,通常会分为以下几个模块

  • admin-common 主要是一些常见的工具类 等
  • admin-biz 主要进行一些业务操作,比如 entity,vo,dao, service等
  • admin-web web项目 依赖common/biz
  • admin-parent 主要是定义项目中依赖的jar包的版本等,用于继承

在以上四个目录之上,可以构建一个新的项目admin,该项目只有一个pom文件,其特殊之处在于:

1. <packaging>的值 是 pom , 而不是默认的jar  
2. 使用了modules元素,实现多模块的聚合  

整个项目的结构如下:

admin 
        --- admin-common 
        --- admin-biz 
        --- admin-web 
        --- admin-parent 
        --- pom.xml  

多模块的好处 1. 结构清晰,便于开发管理 2. 代码复用,比如新增一个admin-app项目,用于开发相关的接口数据,那么common,biz模块可以直接复用。

以下整理使用Maven创建多模块项目的步骤。

第一步 建立总的聚合文件夹 admin,里面只有一个 pom.xml 文件

<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>
      <groupId>com.lmx.test</groupId>
      <artifactId>admin</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>Admin Project</name>
</project>

第二步 在admin目录下建立parent项目,里面也只有一个pom.xml 文件

<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>
      <groupId>com.lmx.test</groupId>
      <artifactId>admin-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>Admin Parent</name>
</project>

第三步 分别创建common,biz,web项目

以common项目为例,在admin目录下执行mvn命令:

mvn archetype:generate -DgroupId=com.lmx.test -DartifactId=admin-common -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

如果要创建web项目,可以使用如下命令:

mvn archetype:generate -DgroupId=com.lmx.test -DartifactId=admin-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false

查看admin-common的pom文件,已经继承了parent:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
               xmlns="http://maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <parent>
            <groupId>com.lmx.test</groupId>
            <artifactId>admin</artifactId>
            <version>0.0.1-SNAPSHOT</version> 
      </parent>
      <groupId>com.lmx.test</groupId>
      <artifactId>admin-common</artifactId>
      <version>1.0-SNAPSHOT</version>
      <name>admin-common</name>
      <url>http://maven.apache.org</url>
      <dependencies>
            <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>3.8.1</version>
                  <scope>test</scope>
            </dependency>
      </dependencies>
</project>

其中 groupId version等是可以继承的,所以可以删除掉!

查看admin下的pom文件:modules元素下已自动加入了3个子模块

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.lmx.test</groupId>
      <artifactId>admin</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>Admin Project</name>
      <modules>
            <module>admin-common</module>
            <module>admin-biz</module>
            <module>admin-web</module>
      </modules>
</project>

至此,项目结构已创建完成,可以通过eclipse或者intellij导入项目 进行开发

相关推荐

FastUI:用Python构建高性能React应用,告别JavaScript

在现代Web开发中,前后端分离已经成为主流趋势。然而,前端开发往往需要深入掌握JavaScript和各种框架,这对于许多Python开发者来说是一个不小的挑战。今天,我们要介绍一个革命性的UI框架——...

Python + Flet 开发网站的最佳数据库模块组合

对于使用Python和Flet开发网站并需要数据库支持的应用,以下是推荐的模块组合方案。方案一:SQLite+SQLAlchemy(推荐轻量级方案)**适用场景**:中小型应用、单用户或...

前端程序员应该往全栈方向发展吗?还是坚守前端?

这是一个非常经典且重要的问题,几乎每一位走到职业生涯十字路口的前端程序员都会思考。它没有一个绝对的“正确答案”,但我们可以从多个维度来分析,帮你找到最适合你的那条路。简单来说,这不是一个“要不要”的...

Python交互仪表盘工具:Panel 进阶学习路线图

Panel作为Python生态系统中最强大的交互式仪表盘工具之一,其学习曲线既平缓又深远。这里我将为您构建一个系统化的进阶学习框架,包含实战项目和关键学习节点。1.现代化Web集成开发1....

PuePy:将Python带入浏览器的革命性框架

在现代网络开发中,JavaScript无疑是主导地位的编程语言。但最近,随着WebAssembly和PyScript的崛起,Python的使用场景逐渐扩展到了前端开发领域。PuePy应运而生,作为一...

不容易!找到一个python的超简易网站搭建神器

作者:清香客来源:Python技术相信很多学习python的酱友们,大部分和我一样是为了提升工作效率,但是在提升自己的工作效率时,也会想着做同样工作的同事能不能也用上自己写的脚本(视工作环境而定)...

PyWebView:用 Python 构建桌面应用的神器

作为一个Python开发者,我一直希望能找到一种简便的方法来构建桌面应用,而不是去学习诸如Electron这种重度依赖JavaScript的技术栈。就在我为桌面应用开发寻找替代方案时,遇到...

Python Django框架中级教程:深入探索Django的核心功能

在Python的Web开发领域中,Django框架以其强大的功能和高效的开发模式占据着重要地位。对于已经掌握了Django基础的开发者来说,进一步深入学习中级知识能让我们开发出更复杂、更强大的Web应...

【Python程序开发系列】使用Flask实现前后端分离(案例)

这是我的第398篇原创文章。一、引言随着web开发的不断发展,前后端分离已成为越来越流行的架构设计。Flask是一个轻量级的Pythonweb框架,非常适合用于构建API,然后配合前端框...

每天一个Python库:Flask超轻量Web框架,灵活高效!

为什么要学Flask?Flask是一个「微型但强大的」Web框架:极简上手,几行代码即可跑起来灵活扩展,想加啥加啥(RESTful、JWT、数据库…)文档齐全,适合入门API开发或快...

Python个人量化投资系统:后台搭建

独立搞量化系统的程序员最烦啥?重复造权限管理的轮子绝对排前三。技术老手用Python+PearAdminFlask两天搭出量化后台,实测开源框架真能省下80%基础工作量。开源后台框架选对,一人项目...

python后端学什么(python后端好找工作吗)

在当今数字化的时代,Python后端开发成为了众多开发者追逐的热门领域。那么,想要在这个领域崭露头角,我们究竟应该学些什么呢?学习Python后端开发需要掌握全栈技术栈,涵盖从基础语法到分布式...

Motia:重新定义后端与智能体整合的未来平台

在AIagent技术飞速发展的今天,我们拥有了诸如Dify、RAGFlow、LangChain等一系列优秀平台。然而,随着场景复杂度增加,开发者正面临一个共同问题:后端越来越碎片化,Agen...

Python数据校验不再难:Pydantic库的工程化实践指南

在FastAPI框架横扫Python后端开发领域的今天,其默认集成的Pydantic库正成为处理数据验证的黄金标准。这个看似简单的库究竟隐藏着哪些让开发者爱不释手的能力?本文将通过真实项目案例,带您解...

Python Flask 建站框架实操教程(flask框架网页)

下面我将带您从零开始构建一个完整的Flask网站,包含用户认证、数据库操作和前端模板等核心功能。##第一部分:基础项目搭建###1.创建项目环境```bash#创建项目目录mkdirfl...

取消回复欢迎 发表评论: