一套好的代码不仅容易阅读而且容易开发与拓展。在JAVA开发与架构中,引入第三方java类库和管理类库maven已经是必不可少的工具。但是很多程序员或者架构师有时并不注意maven的规范使用。都是复制粘贴,能够引入包就置之不理了。随着代码功能越来越多,拆分的服务越来越多,后面就显得杂乱无章,系统架构难以阅读,有时还存在相同的功能不同模块使用第三方库不同版本的情况,给以后的升级和维护又挖下了不少坑。
有时候,如果我们使用maven足够规范,我们通过阅读maven的 <properties> </properties>标签就知道了系统的架构。如所有的第三方引入类库版本集中管理。
如:
从引入的第三方类库中,我们就可以看出系统架构使用了maven进行构建,JDK使用1.8的版本。
使用的springCloud2020.0.3和springboot 2.5.2为架构框架。使用了mysql数据库,使用了连接池,mybatis持久化框架,阿波罗配置中心。JSON转换工具,hutool工具类库,日志框架,jwt验证框架,rocketmq等。
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<base.version>1.0-SNAPSHOT</base.version>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
<spring-boot.version>2.5.2</spring-boot.version>
<mysql.version>8.0.17</mysql.version>
<druid.version>1.1.13</druid.version>
<mybatisplus.version>3.4.3.4</mybatisplus.version>
<mybatis-spring.version>2.2.0</mybatis-spring.version>
<apollo.version>1.8.0</apollo.version>
<dameng.version>7.6.0.142</dameng.version>
<fastjson.version>1.2.83</fastjson.version>
<swagger2.version>2.9.2</swagger2.version>
<hutool.version>5.7.7</hutool.version>
<poi.version>3.17</poi.version>
<commons-lang3.version>3.8.1</commons-lang3.version>
<xstream.version>1.4.18</xstream.version>
<log4j-to-slf4j.version>2.15.0</log4j-to-slf4j.version>
<java-jwt.version>3.8.2</java-jwt.version>
<zxing.version>3.3.0</zxing.version>
<barcode4j.version>2.1</barcode4j.version>
<bcprov-jdk15to18.version>1.66</bcprov-jdk15to18.version>
<rocketmq.version>4.7.1</rocketmq.version>
</properties>
如果maven管理中太多类似这样的管理模式,架构会显得遗漏和难以阅读。
-----------------------------
Maven的原理与使用
一、Maven简介
Maven是一款强大的项目管理工具,主要用于Java项目的构建和管理。它采用了一种声明式的方式描述项目结构和依赖关系,使得开发者能够更加专注于项目本身,而不是一些繁琐的构建过程。
二、Maven原理
- 项目对象模型(POM)
Maven的核心是项目对象模型(Project Object Model,POM)。POM是项目的元数据,包含了项目的各种属性和配置信息。在POM中,可以定义项目的坐标(groupId、artifactId和version)、依赖、插件、资源、目标等。通过POM,Maven能够理解项目的结构和依赖关系,从而进行自动化构建和管理。
- 依赖管理
Maven的依赖管理功能非常强大。通过在POM中声明依赖,Maven可以自动下载和管理这些依赖。开发者只需要关注依赖的坐标,而不需要手动下载和配置。此外,Maven还支持传递性依赖和可选依赖,使得依赖管理更加灵活和方便。
- 插件机制
Maven的插件机制使得构建过程自动化。通过在POM中配置插件,可以自动执行特定的任务,如编译、测试、打包等。插件的执行依赖于目标(goal),一个插件可以有多个目标,每个目标对应一个特定的任务。通过目标,可以将插件与构建流程关联起来,从而实现自动化构建。
- 仓库管理
Maven需要从仓库中下载依赖和插件。默认情况下,Maven会从中央仓库下载。开发者也可以配置自己的仓库,以便从私有仓库下载依赖和插件。仓库管理是Maven的一个重要组成部分,确保了构建过程中的依赖和插件能够被正确地下载和管理。
三、Maven使用
- 安装Maven
首先,需要下载并安装Maven。可以从Maven官网下载最新版本的安装包,并按照官方文档进行安装。安装完成后,可以通过命令行工具验证是否安装成功。
- 创建项目
使用Maven命令行工具创建一个新的Java项目。可以通过以下命令创建一个名为“my-project”的项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false |
上述命令会使用maven-archetype-quickstart原型创建一个新的项目结构。在项目结构中,包含了src/main/java、src/main/resources、src/test/java等目录,以及一个包含main和test入口的App.java文件。
- 编写代码
在src/main/java目录下编写Java代码。同样地,在src/main/resources目录下配置资源文件。在src/test/java目录下编写测试代码。
- 构建项目
使用以下命令构建项目:
mvn clean install |
上述命令会执行以下操作:清理(clean)之前的构建结果、编译(compile)源代码、测试(test)代码、打包(package)项目等。如果构建成功,会在target目录下生成一个jar包或war包等。
- 运行项目
如果项目是一个可执行的Java应用,可以使用以下命令运行:
mvn exec:java -Dexec.mainClass=com.example.MyApp |
上述命令会执行指定的mainClass,即com.example.MyApp。如果项目是一个Web应用,需要先启动服务器,如Tomcat,然后部署到服务器上运行。