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,将打包好的安装到本地仓库中



















