MavenDay01(maven环境配置,基础开发)

  1.  
    一、maven的好处
  2.  
        使用传统的web项目开发的crm大小 40多m
  3.  
        同样的项目使用maven,它的大小只有几百KB
  4.  
        同样的项目使用maven工程来实现,它的项目源码很小,可以初步推断里面一定没有jar包,没有jar包的项目
  5.  
     
  6.  
    二、maven优点是如何实现的
  7.  
    1、依赖管理
  8.  
    2、项目的一键构建
  9.  
        (编译--测试--运行--打包--安装)
  10.  
     
  11.  
        构建
  12.  
        指的是项目从编译--测试--运行--打包--安装整个过程都交给maven进行管理,这个过程称为构建
  13.  
     
  14.  
    maven将项目构建的过程进行标准化,每个阶段使用一个命令完成。
  15.  
    清理-》编译-》测试-》报告-》打包-》部署
  16.  
    清理阶段对应maven的命令是clean,清理输出的class文件
  17.  
    编译阶段对应maven的命令是complie,将java代码编译成class文件
  18.  
    打包阶段对应maven的命令是package,java工程可以打包成jar包,web可以打成war包
  19.  
    三、Maven的安装
  20.  
    从hhtp://maven.apache.org/download.cgi下载
  21.  
    解压到一个不含中文和空格的目录中
  22.  
        bin目录 mvn.bat(以run方式运行目录)、mvnDebug.bat(以debug方式运行项目)
  23.  
        boot目录maven运行需要类加载器
  24.  
        conf目录settings.xml整个maven工具核心配置文件
  25.  
        lib目录maven运行依赖jar包
  26.  
    环境变量配置:
  27.  
        电脑上需要安装jdk1.8+版本(将JAVA_Home/bin配置环境变量path)
  28.  
        配置MAVEN_HOME
  29.  
            D:\apache-maven-3.3.9
  30.  
        将%MAVEN_HOME%/BIN加入环境变量path
  31.  
     
  32.  
        通过mvn -v命令检查maven是否安装成功
  33.  
     
  34.  
        maven的工作需要从仓库下载一些jar包,从远程仓库(可以理解成互联网上的仓库)下载jar包并存在本地仓库,本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用再每次从远程仓库中下载了
  35.  
     
  36.  
        本地仓库的配置
  37.  
        D:\apache-maven-3.3.9\conf\settings.xml文件中
  38.  
            <!--本地仓库的路径-->
  39.  
            <localRepository>D:\Repositories</localRepository>  
  40.  
     
  41.  
        项目中 src是放项目的源代码
  42.  
        pom.xml作为一个maven工程必不可少的 代表了maven的配置文件
  43.  
     
  44.  
        maven的目录结构
  45.  
            java        放入项目的源码
  46.  
            resources   放入配置文件
  47.  
            webapp      页面素材    
  48.  
     
  49.  
    四、Maven命令
  50.  
    clean 是maven工程的清理命令,执行clean会删除target目录的内容
  51.  
     
  52.  
    package 是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包
  53.  
     
  54.  
    install 是maven工程的安装目录,执行install将maven打成jar包或war包发布到本地仓库
  55.  
     
  56.  
    test 是maven工程的测试命令,会执行 src/test/java下的单元测试类
  57.  
    cmd执行mvn test 执行src/test/java 下单元测试类
  58.  
     
  59.  
    complie 是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下
  60.  
    cmd中用mvn complie
  61.  
     
  62.  
    五、生命周期
  63.  
    maven对项目构建过程分为三套独立的生命周期,分别为:
  64.  
        Clean Lifecycle 在进行真正的构建之前进行一些清理工作
  65.  
        Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等
  66.  
        Site Lifecycle 生成项目报告,站点,发布站点
  67.  
     
  68.  
    阶段
  69.  
     
  70.  
        当后面的命令执行时,执行前面的操作
  71.  
     
  72.  
    六、使用eclipse开发maven项目
  73.  
     1、m2e的插件
  74.  
        因为使用的eclipse版本比较高,会自带maven插件
  75.  
        preferences->maven->Installations 选择自己的maven版本 没有先add
  76.  
     
  77.  
     2、preferences->maven->User Settings 配置本地仓库让eclipse找jar包
  78.  
        D:\apache-maven-3.3.9\conf\settings.xml
  79.  
     
  80.  
     3、构建索引
  81.  
        Window->show view->other->maven repositories
  82.  
     
  83.  
     4、重构索引
  84.  
        Local repository 右键 rebuild index
  85.  
     
  86.  
     5、在eclipse中创建maven工程
  87.  
        Maven Project 将来项目拆分的时候,需要创建一个这样的工程
  88.  
        Maven Module maven模块:可以用它来创建一个项目的某个模块,比如:crm-dao、crm-service、crm-web
  89.  
     
  90.  
        勾选 create a simple project 会生成maven的目录结构
  91.  
     
  92.  
        use a default workspace location 放在默认名称空间下
  93.  
     
  94.  
    group id 公司组织名称
  95.  
    Artifact id 项目名
  96.  
    version  版本
  97.  
    Packaging
  98.  
    name
  99.  
    description
  100.  
     
  101.  
    可以看到工程,但是报错,需要手动添加WEB-INF 和他的web.xml
  102.  
     
  103.  
    src/java/main 创建一个servlet,但报错
  104.  
     
  105.  
    要解决问题,就是要把servlet-api-xxx.jar包放进来,作为maven工程应当添加servlet的坐标,从而导入它的jar包
  106.  
    直接打开过程的pom.xml文件,再添加坐标
  107.  
    添加jar包的坐标时,还可以指定这个jar包将来的作用范围
  108.  
     
  109.  
    七、基本概念
  110.  
    A依赖B:需要在A的pom.xml文件中添加B的坐标,添加左边时需要指定依赖范围,依赖范围包括:
  111.  
        complie:编译范围,指A在编译时依赖B,此范围为默认范围,编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包
  112.  
     
  113.  
        provided:provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用,provided依赖在编译和测试的时候需要,在运行时不需要.比如:servlet api被tomcat容器提供
  114.  
     
  115.  
        runtime:runtime依赖在运行和测试系统的时候需要,而在编译的时候不需要,比如:jdbc的驱动包。由于运行时需要所以runtime范围的依赖会被打包
  116.  
     
  117.  
        test:test范围依赖 在编译和运行时不需要,只有在测试编译和测试运行阶段可用,比如:junit,由于运行时不需要所以test范围依赖不会被打包
  118.  
     
  119.  
        system:system范围依赖与provided类似,但是必须显式的提供一个对于本地系统中jar文件的路径,需要指定systemPath磁盘路径,system依赖不推荐用
  120.  
     
  121.  
    设置编译版本
  122.  
    使用maven的插件来设置成jdk1.8
  123.  
     
  124.  
       <build>
  125.  
            <plugins>
  126.  
                <plugin>
  127.  
                    <groupId>org.apache.maven.plugins</groupId>
  128.  
                    <artifactId>maven-compiler-plugin</artifactId>
  129.  
                    <version>3.2</version>
  130.  
                    <configuration>
  131.  
                        <source>1.8</source>
  132.  
                        <target>1.8</target>
  133.  
                        <encoding>UTF-8</encoding>
  134.  
                        <showWarnings>true</showWarnings>
  135.  
                    </configuration>
  136.  
                </plugin>
  137.  
            </plugins>
  138.  
      </build>
  139.  
     
  140.  
    项目右键 maven->update project

 

å¨è¿éæå¥å¾çæè¿°

 å¨è¿éæå¥å¾çæè¿°

 
posted @ 2020-06-28 08:42  学菜狗  阅读(150)  评论(0)    收藏  举报