Rainbond构建Java Maven项目原理解读
Apache Maven 相关知识说明
Apache Maven 是跨平台的项目管理工具。主要服务于基于 Java 平台的项目构建,项目管理和项目信息管理。所谓的项目构建就是对项目进行清理、编译、测试、报告、打包、部署等一系列的过程称为项目的构建。
关于更多的 Maven 介绍参考官方文档:https://maven.apache.org/
标准的 Maven 管理的 Java 项目一般有几种制品打包方式:
-
Jar 包
此类打包方式过去主要用于公共的类库项目,如今也作为 SpringBoot 等架构的服务类项目的打包方式。打成 Jar 包的项目一般不需要依赖中间件可以直接运行。
-
War 包
过去传统 Java 服务的主要打包方式,运行于 Tomcat 等中间件中。
Maven 的项目组织形式一般有两种:
-
单模块
这类方式一般被小型项目采用,主工程直接定义项目的依赖和打包形式等配置。
-
多模块
这类方式目前使用面较广,更加灵活的项目组织方式,一个父工程,它包含了两个子工程(模块),一个 core 模块,一个 webapp 模块,webapp 模块依赖于 core 模块。这是一种很常见的工程划分方式,即 core 模块中包含了某个领域的核心业务逻辑,webapp 模块通过调用 core 模块中服务类来创建前端网站。这样将核心业务逻辑和前端展现分离开来,如果之后决定开发支持移动端 APP,那么 core 模块是可以重用。
多模块的工程可以单独构建指定的服务模块,单独构建时也同时会构建其依赖的其他模块。
Maven 依赖包管理是其核心功能,依赖包管理我们需要注意以下几点内容:
-
本地 Maven 仓库
本地仓库存在于编译环境的本地磁盘,可以认为这是依赖包的第一级缓存。存储路径在settings.xml文件中配置localRepository
-
远程仓库
远程仓库包括 Maven 中央仓库,企业自建私服或其他云厂商提供的仓库, 用户在 pom.xml 文件或settings.xml文件中配置,仓库认证信息只能在settings.xml中配置。
-
远程仓库代理或镜像
在settings.xml配置文件中可以配置mirrors 来设置,比如使用私服来可以缓存所有外部仓库的镜像。
<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://192.168.0.1:8081/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>