文章目录
- Maven模块化开发
- 开发流程
- 工程的基本目录结构
- 创建根项目(工程)
- 创建统一的依赖管理
- 添加`pom.xml`文件
- 创建依赖包管理
- 设置工程的构建参数
- 创建通用的工具类
- 添加领域模型(domain)项目
- 添加后台管理(admin)项目
- 创建前端(ui)项目
- 创建WebApi项目
Maven模块化开发
在多人协同开发时,特别是规模较大的项目,为了方便日后的代码维护和管理,我们会将每个开发人员的工作细分到具体的功能和模块上。随着项目的扩大,模块也越来越多,后续会更加难以维护和扩展,这种情况会引入微服务架构。
当前来说,我们可以把模块划分为:
- 统一的依赖管理(dependencies)
- 通用的工具类(Commons)
- 领域模型(domain)(实体类)
- 管理后台(admin)
- 前端视图(ui)
- 接口模块(api)
Maven可以用groupId
和artifactId
来定位package
来实现包依赖,而项目中的模块也是一个一个的包,也可以通过Maven来进行依赖管理,实现模块化开发。
开发流程
工程的基本目录结构
创建根项目(工程)
创建一个名为my-shop
的工程,添加pom.xml
文件,内容如下:
<?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.bailiang</groupId>
<artifactId>myshop</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>myshop-web-dependencies</module>
<module>myshop-web-commons</module>
<module>myshop-web-domain</module>
<module>myshop-web-admin</module>
<module>myshop-web-ui</module>
<module>myshop-web-api</module>
</modules>
</project>
该项目称为Root项目,主要作用是管理整个工程的全部模块,当有新模块加入时需要在modules
元素下配置对应的模块目录相对路径
说明:
packaging
:节点表示本项目打包类型,因为根项目是用来管理其他项目的,所以类型是pom
,代表是工程管理项目modules-module
:包含项目中各个模块的目录路径
创建统一的依赖管理
创建一个名为myshop-dependencies
的项目。该项目的作用是统一整个工程的外部包依赖,其他项目只要继承该项目,就可以自动获得依赖包的版本等信息,从而使多个项目依赖的包可以有统一的版本。
添加pom.xml
文件
<?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>
<parent>
<groupId>com.bailiang</groupId>
<artifactId>myshop</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>myshop-web-dependencies</artifactId>
<packaging>pom</packaging>
</project>
说明
artifactId
:本项目在Maven中的检索索引,必须填写正确,否则其他项目无法继承parent
:节点表示继承了某个项目,项目的索引和版本号由groupId
、artifactId
、version
指定,而relativePath
指定了被继承项目的配置文件相对路径
创建依赖包管理
这里是创建包的管理,只是声明了包的索引和版本号,而不是实际下载包。当其他项目继承本项目并添加了包依赖时,才会正式下载包。
<properties>
<spring-version>4.3.24.RELEASE</spring-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
</dependencies>
</dependencyManagement>
设置工程的构建参数
<build>
<!-- 设置工程构建的工具和SDK版本号 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<showWarning>true</showWarning>
</configuration>
</plugin>
</plugins>
<!-- 设置工程打包jar时需要的资源目录 -->
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resoureces</directory>
</resource>
</resources>
</build>
说明
${maven.compiler.source}
,${maven.compiler.target}
,${project.build.sourceEncoding}
中的参数默认引用在Maven的settings.xml
配置文件中的profile-properties
,也可以在本文件的properties
中设置工程自己的参数
创建通用的工具类
创建一个名为myshop-commons
的项目,添加pom.xml
文件,内容如下:
<?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>
<parent>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../myshop-web-dependencies/pom.xml</relativePath>
</parent>
<artifactId>myshop-web-commons</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
</project>
说明
parent
:继承的路径就是myshop-dependencies
项目的pom.xml
文件相对路径了artifactId
:指定本项目的索引packaging
:本项目是要打包为jar包dependencies
:这里才是正式加载第三方依赖
添加领域模型(domain)项目
该项目保存实体类
创建myshop-domain
项目,添加pom.xml
内容如下:
<?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>
<parent>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../myshop-web-dependencies/pom.xml</relativePath>
</parent>
<artifactId>myshop-web-domain</artifactId>
<packaging>jar</packaging>
</project>
添加后台管理(admin)项目
创建myshop-web-admin
项目,添加pom.xml
内容如下:
<?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>
<parent>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../myshop-web-dependencies/pom.xml</relativePath>
</parent>
<artifactId>myshop-web-admin</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-domain</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</project>
说明
${project.parent.version}
:通过配置可以一次修改,多次使用,避免多个地方修改版本号
创建前端(ui)项目
创建myshop-web-ui
项目,添加pom.xml
内容如下:
<?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>
<parent>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../myshop-web-dependencies/pom.xml</relativePath>
</parent>
<artifactId>myshop-web-ui</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-commons</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</project>
创建WebApi项目
创建myshop-web-api
项目,添加pom.xml
内容如下:
<?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>
<parent>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../myshop-web-dependencies/pom.xml</relativePath>
</parent>
<artifactId>myshop-web-api</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.bailiang</groupId>
<artifactId>myshop-web-commons</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</project>
最后
以上就是勤恳水蜜桃最近收集整理的关于07. Maven的模块化-项目构建Maven模块化开发开发流程的全部内容,更多相关07.内容请搜索靠谱客的其他文章。
发表评论 取消回复