zoukankan      html  css  js  c++  java
  • maven

    1 倘若没有maven

    新建了一个项目,然后项目中写了一些代码

    需求:需要大家写一段jdbc代码,去读取某张表中的数据

    一定少不了的东西是要mysql的驱动包

    需求:请你用spring去开发一个简单的crud

    有一种困惑?

    很烦,当你在做不同的项目的时候,你都需要导入一些基本的重复的jar

    /*

    Spring 基本开发的时候,需要的jar包是

    */

    Maven可以做的事情

    jar包管理  

    Com.gupao.dao

    Com.gupao.service

    Com.gupao.web

    Com.gupao.util

    contextConfiguration.xml

    Struts-config.xml

    Hibernate-cfg.xml

    Properties.xml

    项目的构建和管理

    2 maven介绍

     

    3 maven初体验

    正常使用maven有两种形式,一种是命令行形式(手动创建maven项目),另外一种是集成开发工具创建maven项目。

    因为手动创建过程比较麻烦一点,我担心大家听的时候会觉得枯燥。

    带大家使用一下maven的感觉。Maven怎么去进行jar包管理的,或者是怎样去进行项目的构建和管理的。

    MyEclipse    Idea     

    Cmd    javac    java  

    4 maven官网

    大家在学习一门新的技术的时候,会不会想找最官网最权威的答案?

    只有学会看官网,你才能得到最完善最牛逼的答案。

    maven官网:http://maven.apache.org/

    其实英文文档并没有那么难,只要你多看多理解,也就是那么回事,而且在英文官网文档中你可以学习到最权威的知识。

    5 maven下载与安装

    jar包管理,以及项目构建与管理的。

    用一用maven,怎么用?

    (1)下载   download

    System Requirements

     

    (2)安装

    注意:maven安装之前,一定要已经安装了jdk

    只需要将maven所在的目录的bin文件夹配置到Path环境变量中,这样做的目的是在命令行的任意目录下,都可以使用“mvn”命令来操作。

    MAVEN_HOME类比JAVA_HOME     maven所在的目录配置到这个MAVEN_HOME

    6 maven配置

    查看maven的版本信息:mvn -version 

    maven我到底该怎么用?如何去用?如何进行jar包项目的管理等等? 

    mvn [options] [<goal(s)>] [<phase(s)>] 

    mvn命令有一个更好的理解,就是不要觉得太突兀  mvn -v   mvn package   javac Person.java   java Person

    maven的安装目录的conf文件夹中有一个settings.xml文件,而官网中又说在.m2文件夹下也有这样一个文件,但是我们没有发现,原因是?

    conf中的settings.xml文件复制到.m2文件夹下之后,会不会有冲突?也就是说,当两边都存在settings.xml文件的时候,我们以哪个为准?

    7 maven目录结构

     

    bin目录:包含了maven运行的一些命令脚本

    boot目录:包含的是类加载器的一些东西

    conf目录:configuration配置的,保存一些配置文件的

    lib目录:保存jar包的

    原因是希望大家对maven目录结构有一个整体的认知,至少知道maven各个文件夹是干什么的,这样接下来学习maven的时候你才会不慌

    8 maven项目目录结构

    项目目录结构,实际上指的是maven要求你的项目必须的一个目录层次。

    约定优于配置  (Convention Over Configuration)

    要去使用maven帮你进行jar包的管理,以及项目的构建和管理等等,你就要遵循maven的规定/约定

    maven要求的你的工程结构必须是哪样哪样的。

    MyEclipse/IDEA  中想怎么建就怎么建,这边放这个,这边放那个。

    有了maven之后,你就不能那么随心所欲的。

    9 手动创建maven项目

    按照之前的图解,我们手动创建了maven项目,那其实target目录还是没有的,怎么呢?

    需求:我想要在命令行中打印出一句话,比如叫做hello gupao maven

    传统的方式

    Maven的做法

    (1)使用命令行进入到maven的工程中“GupaoMaven

    mvn compile  maven项目进行编译    

    2target目录是项目输出的一个目录,这个输出现在应该多少有点感觉了

    10 开发工具创建maven项目

    其实无论是myeclipse还是idea里面都集成了maven,默认安装了maven

    maven默认帮你写好了一些项目的目录结构

    创建一个简单的maven项目必备的内容

    com.gupao.maven

    11 maven配置文件之settings.xml

    该文件是maven的全局配置文件  -web项目中的web.xml

    1mirrors标签,表示配置镜像所在的路径的

    默认的地址是国外的:https://repo.maven.apache...maven要帮你管理jar,这些jar包下载的地址是从该地址下的,当然这个下载地址可以改变,就是通过mirrors标签。

    1. <mirror>  
    2. <id>alimaven</id>  
    3. <name>aliyun maven</name>  
    4. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
    5. <mirrorOf>central</mirrorOf>          
    6. </mirror>

     将这段话配置到mirrors标签对中即可。

     

    一方面国外镜像的地址下载速度比较慢,所以可以考虑国内镜像的地址,比如阿里云的。

    (1)localRepository

    (2)interactiveMode 标识maven是否需要和用户交互以获得输入

    如果maven需要和用户交互以获得输入,那么则设置成true,不然则设置为false

    (3)offline

    标识maven是否需要在离线模式下运行

    (4)pluginGroups

    当插件的组织id(groupId)没有显示提供时,供搜寻插件组织Id的列表

    (5)proxies

    用来配置不同的代理的

    7servers

    仓库的下载和部署是在pom.xml文件中进行定义的。比如说用户名,密码需要访问远程仓库的时候,有时候需要安全认证,这个认证就可以配置在servers标签中

    8profiles

    根据环境参数来调整构建配置的列表

    12 maven仓库

    mavenjar包自动下载下来之后,这个保存jar包的目录是由我们自己指定,你自己可以指定这个目录存储的位置,当然,它也有一个默认的位置。

    补充:在maven构建项目的时候,它会帮我们把项目中所需要的一些基础的jar包下载下来,这个下载的地址就是由settings.xml文件里面的mirror标签所指定的。

    maven仓库,实际上指的就是jar包下载下来之后保存的目录。

    maven仓库保存在自己电脑中的叫做本地仓库,localRepository的含义本地仓库。

    <localRepository>E://temp//myrepo</localRepository>   自己指定了一个本地maven仓库所在的地址,而不是之前默认的当前用户的.m2下面的repository文件夹了。

    剧透:如果一个jar包已经在本地仓库中有了,注意这个jar包版本一定是要一致的才算有了,如果版本不一致,不能算作有,比如3.8.1   3.8.2

    其他如果有了,那么就不会再次去重复下载。

    优势:可以节约本地的一个空间存储。

    13 maven配置文件之pom.xml

    pom   project object model   项目对象模型,它为唯一标识该项目的

    13个必填字段

    groupId   artifactId   version所组成的就可以唯一确定一个项目

    groupId标识的项目组(填写公司的域名)  组织

    artifactId项目名称    

    version版本号

    上面的三个标签是必填标签

    2pom里面还有会dependencies标签,这个标签就是用来配置我们项目中具体需要哪些jar

    3properties标签,用来定义pom中的一些属性的

    4build    指定如何构建当前项目的

    source:    指定了当前构建的source目录

    plugin:    指定了进行构建时使用的插件

    (5)packging   指定当前构建项目的类型,war jar pom

    补充:pom文件是可以继承的,超级pom文件等等。

    比如一定pom文件中定义了一些东西,另外一个pom文件也想要使用,这时候就可以使用继承的方式。

    14 maven依赖

    dependencies标签,里面可以包含很多的dependency标签

    http://mvnrepository.com/    maven项目中要想下载指定的jar包,实际上就是在pom.xml文件的dependencies标签对中进行配置,那这个dependency怎么写?具体就是在这个网址中进行搜索。

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->

    <dependency>

        <groupId>org.mybatis</groupId>

        <artifactId>mybatis</artifactId>

        <version>3.4.5</version>

    </dependency>

    比如上面这段配置的确可以下载具体的jar包,怎么去验证它会下载下来呢?

    不仅可以把当前指定的jar包下载下来,而且它所依赖的其他包也会自动下载下来。

    maven比如已经下载过的jar包,还会再下载吗?

    如果已经下载过的jar包,maven不会帮我们再次下载(前提是maven仓库是同一个目录,如果换了目录,它还是会重新下载的),而且对于不同的版本的同一个jar包,maven默认它是不同的jar包。

    15 maven插件

    什么是maven插件?

    maven实际上是一个依赖插件执行的框架,每个人物都是由插件完成的。

    两种插件类型:

    Build plugins    在构建时执行,需要在pom.xml文件中进行配置

    <build>

    reporting plugins    在网站生成过程中执行,也需要在pom.xml文件中进行配置

    <reporting>

    常用的插件列表

    clean    项目构建之后用于清理项目的

    compiler    编译java源代码的

    jar      构建jar文件的

    war     构建war文件的

    tomcat   ....

    16 mavenarchetype

    maven本身来说,它会帮我们已经定义好一些archetype,这些archetype是我们开发中常用的一些项目模板,你新建maven项目的时候,只需要选择对应的archetype即可。

    但是往往是官方提供的东西虽然好,不是太符合个人定制化的需要。

    大家自己可能有一套自己觉得比较满意的archetype,所以往往我们会自定义自己的archetype

    (1)pom.xml文件中定义一个插件

    (2)pom.xml文件所在的目录使用mvn archetype:generate

    (3)target目录中会生成一个自定义的骨架

    (1)在本地安装一下这个archetype

    mvn install

    就把刚才的archetype安装到了本地

    17 搭建maven私服

    如果使用的是国外镜像,那么下载速度比较慢

    如果使用的是阿里云镜像,速度还算ok,但是假如网速不好的时候,其实也是比较慢的

    如果没有网的情况下更加下载不了

    团队开发的时候,是不是每个人在自己的本地仓库都需要下载一份呢?

    能不能大家共用一份呢?

    当我们某个maven项目需要一份jar包的时候,mysql-connector.jar

    先看一下你本地仓库是否有这样jar包(版本也要判断),如果有,则不下载

    如果没有,则去下载,并且保存到本地仓库中,然后以后需要的话,就不需要下载了

    在项目中进行开发的时候,仅仅就是将本地仓库的jar包导入到工程里面即可,再也不用

    像传统原始方式那样,每个项目中都要一份单独的jar包,这样会造成jar包的冗余。

    写好一个web资源(HTML页面)想要供外界去访问,你会在服务器上装一个web服务器比如tomcat服务器

    18 maven项目实战

    如果说你使用的maven自定义的archetype发现里面的工程目录结构并不是严格按照maven所要求的,这时候你需要把缺少的目录补全

    需求:使用maven项目搭建一个springmvc的简单流程

    (1)新建一个maven工程

    (2)根据你需要创建的项目类型,导入你需要的jar

    根据dependency标签去导入jar包,并不是太难的一个过程,很方便

    (3)web.xml文件

    (4)springmvc-serlvet.xml

      

    师傅领进门,修行靠个人 ------from gupao 

  • 相关阅读:
    基于Docker的Mysql主从复制搭建
    Docker操作命令——查看、停止、删除容器
    Git命令
    未定义数组下标: 0
    zookeeper-3.4.14单机多端口集群搭建
    使用MAT分析dump文件定位程序问题
    intellij idea2019.1中文破解版安装
    vscode打造golang开发环境
    python项目开发环境模块安装记录
    shell用法
  • 原文地址:https://www.cnblogs.com/flgb/p/12452433.html
Copyright © 2011-2022 走看看