maven: 是一个apache的一个开源项目,是一个项目管理工具,用来帮助开发者管理项目中的 jar(mysql,jaskson,jwt),以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。
为什么学习Maven?jar 包难以寻找;jar 包依赖的问题;jar 不方便管理;项目编译
maven中的概念
maven是如何工作的:第一印象就是管理jar包
maven官方提供了一个专门存储jar的仓库,不同的开发者或者框架的官方将这些jar上传到maven官方提供的仓库中。在仓库中,每一个jar都有一个唯一的位置,这样统一管理这些jar,其他开发者如果需要使用,只需要知道使用的jar包在maven仓库中的位置即可。只需要借助maven,输入jar包地址,maven工具就会自动从maven仓库下载jar。
Pom(Project Object Model 项目对象模型):pom.xml文件是用来指导maven工具如何工作,里面配置项目信息,依赖的jar,编译选项等信息
Maven 管理的项目的根目录下都有一个 pom.xml 文件。pom.xml 文件指导maven工具如何工作。 在 pom.xml 文件中配置项目基本信息以及项目构建信息等。比如:项目坐标、项目依赖的 jar、插件、编译选项等。 一旦在 pom.xml 文件中配置了所依赖的 jar,Maven 会自动从构件仓库中下载相应的构件。
坐标:地址,是jar包在仓库中位置 groupId、artifactId、packaging、version
maven 给每个 jar 定义了唯一的标志,这个在 maven 中叫做项目的坐标,通过这个坐标可以找到你需要用到的任何版本的 jar 包。 groupId、artifactId、packaging、version 的组合被称为项目的坐标,它们形成了项目的唯一标识,Maven通过坐标来精确定位构件。其中 groupId、artifactId、version 是必须的,且这三项的值必须唯一,packaging 是可选的(默认为jar)。
仓库: 存放jar的地方,中央库全球共享(只有一份),先将 jar 从中央仓库下载到本地仓库,然后在项目中引用本地仓库的 jar。在全球各地还有镜像仓库(备份、阿里云),本地仓库(自己的电脑)。
Maven开发环境搭建:
前提
1.安装jdk maven是依赖于jdk
2.需要有网,第一次下载jar包需要从中央仓库或
者镜像仓库下载
1.下载 maven 服务器
下载maven:官网:http:// maven.apache. org,学习期间使用3.6.0版本
进行解压,然后配置环境变量,在path中配置到bin目录 D:\Program Files\apache-maven-3.6.0\bin
测试maven是否配置成功:命令行中输入mvn -version
2.配置maven
apache-maven-3.6.0\conf 配置文件,settings.xml是maven的主配置文件
配置两个文件: 1.本地仓库位置
<localRepository>D:/mavenRepository</localRepository>
2.配置阿里云镜像仓库地址,为了下载速度快
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
idea中设置maven
最后点击应用,保存
创建maven工程
Group、Artifact、Version一般创建工程的时候不用管,如果想要把这个安装到仓库的时候才需要修改
maven项目结构
Pom.xml配置
maven 仓库官网http://mvnrepository.com/,在此官网就可以下载自己所需开发 jar 包
<?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.example</groupId> <!--组id(jar包在仓库的地址)-->
<artifactId>mavenDemo</artifactId><!--构建id(项目名)-->
<version>1.0.0</version><!--版本号-->
<name>mavenDemo</name><!--项目的名字-->
<packaging>war</packaging><!--打包类型-->
<!--属性设置-->
<properties>
<!--编译的版本-->
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<junit.version>5.6.2</junit.version>
</properties>
<dependencies><!--依赖-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId><!--打包的组id-->
<artifactId>mysql-connector-java</artifactId><!--构建id(组件名字)-->
<version>8.0.16</version><!--版本号-->
<type>jar</type><!--包类型,默认是jar,如果是jar包的话就不用写-->
<scope>compile</scope><!--范围,作用域,默认是compile,打包就会将jar包打包到项目中的lib目录中-->
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope><!--provided项目打包时,此jar包不会被打包到项目中去,只是本地编译需要-->
</dependency>
</dependencies>
<build>
<plugins><!--配置maven插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.0</version>
</plugin>
</plugins>
</build>
</project>
各个子元素功能解释:
<groupId>,<artifactId>和<version>:依赖项的基本坐标
<type>:依赖项的 packaging 类型,默认是 jar;
<scope>:依赖项的作用范围,默认是 compile。各个取值及含义如下:
compile:编译时和运行时依赖。如果你的项目最终打包为 war 包,则该依赖包会被拷贝到 war 包中的 lib 目录中。
provided:编译项目主代码和测试代码时使用此依赖项,运行时由 jre 或 web容器提供。如果你的项目最终打包为 war 包,则该 jar不会被打包。
maven命令
1.compile 编译
双击MavenDemo/Lifecycle/compile,编译完之后会生成target文件夹,相当于out。
也可以在cmd中输入命令:
2.clean
删除 target
3.package 本地进行打包
打包后会生成.war的文件,war包给运维人员,运维人员把war包部署到服务器中
4.install 把项目安装到本地仓库
install包含compile和package,将打包好的安装到本地仓库中