前言
Maven翻译为"专家"、"内行"
, 是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写: PO
M)概念,Maven利用一个中央信息 片断能管理一个项目 的构建、报告和文档等步骤。
Maven是一个项目管理 工具,可以对Java项目进行构建、依赖管理。
Maven也可被用于构建和管理各种项目,例如C#,Ruby, Scala 和其他语言编写的项目。Maven 曾是Jakarta项目的子项目,现为由Apache软件基金会主持的独立Apache项目。
本篇博客是我在进行springboot学习的过程中对于maven的认知总结。
Maven功能及特点
Maven到底是什么呢?
其实当你看完我上面的描述,又或者在网上找到相关解释时。内心旁白哦哦,原来这就是Maven啊。其实呢啥也不知道
等等这种大白话。如果没明白maven是什么,那么上面这句话跟没说一样,我自己觉得,Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了,怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,
如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。
所以,根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包,在此之前我们就必须了解如何创建maven项目,maven项目的结构是怎样,与普通java,web项目的区别在哪里,还有如何配置pom.xml获取到对应的jar包等等,这里提前了解一下我们如何通过pom.xml文件获取到想要的jar的。
<dependencies>
<!-- 想要获得mybatis架构里的包和一些相关资源时,就可以引入mybatis的依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- lombok一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,比如在写封装一些信息是,封装的字段一般我们都是建立get,set方法去解决这类问题,但是如果用了lombok时,那么这个工序直接省略掉,直接@Data可以搞定,是不是感觉简单了呢-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
<!-- mysql依赖 这个依赖就是加入mysql服务所需的驱动的,-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- junit依赖这个依赖很重要,占据了巅峰位置,因为它是运行的保证,就是一个run的工能了 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!-- log4j依赖这个依赖主要是看你运行时的日志,可以更详细的看见你的运行结果,内部的数据变化 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<resources>
<!--注册资源目录就是用来提供目录,提供src/main/java的.xml或则ini之类的文件的路径,用**/*.xml这种加后缀名的方式更容易准确找到-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</project>
上面这个只是希望加强大家对于pom.xml文件的理解。而我所配置的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.miaoshaproject</groupId>
<artifactId>miaosha</artifactId>
<version>1.0-SNAPSHOT</version>
<name>miaosha</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> //这个parent标签是我自己添加的
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> //这个也是的
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> //获取junit的jar包的编写
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
从上面我所标注的东西不难看出,pom.xml通过groupId、artifactId、version三个属性就能定位一个jar包
pakaging标签是老版本的设定,可以忽略不计。
Maven的好处
使用Maven管理项目的好处主要有两点:
其一是使用Maven管理的Java 项目都有着相同的项目结构
。 有一个pom.xml 用于维护当前项目都用了哪些jar包;所有的java代码都放在 src/main/java 下面; 所有的测试代码都放在src/test/java 下面 。
其二是便于统一维护jar包。
maven风格的项目,把所有的jar包都放在了本地"仓库“ 里,然后哪个项目需要用到这个jar包,只需要给出jar包的名称和版本号就行了,这样就实现了jar包共享,避免每一个项目都有自己的jar包带来的麻烦。
其实如果在实际开发项目的过程中,你可以明显感受到它的魅力。
例如:
1.项目开发中第三方jar引用的问题,开发过程中合作成员引用的jar版本可能不同,还有可能重复引用相同jar的不同版本,使用maven关联jar就可以配置引用jar的版本,避免冲突。
2.以pom.xml文件中dependency属性管理依赖的jar包,而jar包包含class文件和一些必要的资源文件。
当然它可以构建项目,管理依赖,生成一些简单的单元测试报告,像现在公司的持续集成都广泛的使用maven,
当你接触一些项目以后你就会有更深的体会。
3…你给出的图片中binary是二进制文件,source是源码,开发中我们需要下载的是binary文件,后缀标识压缩的算法. 一般来说,windows系统用zip较多,linux系统用tar.gz较多。source是maven项目的源码,探究原理时可以下载源码进行研究。
到这里我的博客就截止了,离别总是那么的伤人。后续的内容等我熬夜加班加点在弄吧。铁汁们,我先下了!
本篇博客所引用的注释1