Maven 笔记一

一、目前掌握的技术

二、目前的技术在开发中存在的问题

                  1、一个项目就是一个工程

                            如果项目非常庞大,就不适合继续使用 package 来划分模块,

                            最好是每一个模块对应一个工程,利于分工协作。

                            借助于 Maven 就可以将一个项目拆分成多个工程。

 

                   2、项目中的需要的 jar 包必须手工 复制、粘贴 到 WEB-INF/lib 目录下。

                            带来的问题是:同样的 jar 包文件重复出现在不同的项目工程中,

                            一方面浪费存储空间,另一方面也让工程比较臃肿。

                            借助 Maven,可以 将 jar 包仅仅保存在 “仓库”中,有需要使用工程

                            引用这个文件接口,并不需要真的把 jar 包复制过来。

                            类似于 java 中栈空间的多个引用指向同一个堆空间里的内容,这样就可以

                            节约内存。

 

                   3、jar 包到官网下载,不同技术的官网提供 jar 包下载的形式五花八门。

                            有些技术官网就是通过 Maven 或 SVN 等专门的工具来提供下载。

                            如果是以不规范的方式下载的 jar 包,那么其中的内容很可能也是不规范的。

                  

借助于 Maven 可以以一种规范的方式下载 jar 包,因为所有知名框架或第三方工具的 jar 包以及按照统一的规范存在了 Maven 的中央仓库中。

 

以规范的方式下载的 jar 包,内容也是可靠的。

Tips: “统一的规范” 不仅对 IT 开发领域非常重要,对人类社会也是非常重要。

 

4、一个 jar 包依赖的其他 jar包需要手动加入到项目。                

                            如果所有 jar 包之间的依赖关系都需要程序员自己非常清楚的了解,

                            那么会极大的增加学习成本。

                            Maven 会自动将依赖的 jar 包导入进来。

 

三、Maven 是什么?

         1、Maven 是一款服务于 java 平台的自动化构建工具。

                   Make --> Ant --> Maven --> Gradle(缺少熟练操作者)

 

         2、构建

                   A、概念:构建就是以我们编写的 Java 代码、框架配置文件、国际化等其他资源文件、JSP 页
                                    面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。

                            编译

                            部署

                            搭建

        

                    B、编译:java 源文件 [User.java ] --> 编译成 —> Class字节码文件 [User.class ]

                                     --> JVM去执行

                   C、部署:一个 BS 项目最终运行的并不是动态 Web 工程本身,而是这个动态 Web

                                     工程 “编译的结果”。

                                     动态 Web 工程 —> 编译、部署 —> 编译结果

能够看成编译结果中是没有 WebContent 路径的,这也是为什么我们在写路径时不会写到它。即开发过程中,所有的 路径 或配置文件中配置的 类路径 等都是以 编译结果 为标准的

    

Tips:运行时环境:

            其实是一组 jar 包的引用,并没有把 jar 包本身复制到工程中,所以并不是目录。

 Tips:  tc_server

             整个目录复制到 eclipse 解压安装目录下的 dropins 目录下即可。

eclipse 自动编译:

自动部署。

 

 3、构建过程的几个主要环节
        ① 清理 清理:删除以前的编译结果,为重新编译做好准备。
        ② 编译 编译:将 Java 源程序编译为字节码文件。
        ③ 测试 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
        ④ 报告 报告:在每一次测试后以标准的格式记录和展示测试结果。
        ⑤ 打包 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar                                包,Web 工程对应 war 包。
        ⑥ 安装 安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
        ⑦ 部署 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

.4 自动化构建。

 

四、安装 Maven 核心程序

   ① 检查JAVA_HOME环境变量

    

② 解压Maven的核心程序
        将apache-maven-3.5.0-bin.zip解压到一个非中文无空格的目录下。例如:D:\Maven\apache-maven-3.5.0
    ③ 配置环境变量
         M2_HOME D:\Maven\apache-maven-3.5.0
         path    D:\Maven\apache-maven-3.5.0\bin
    ④ 查看Maven版本信息验证安装是否正确
         C:\Windows\System32>mvn -v

 

五、Maven 核心概念
Maven 能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven 的九个核心概念入手,
看看 Maven 是如何实现自动化构建的
① POM
② 约定的目录结构
③ 坐标

④ 依赖管理
⑤ 仓库管理
⑥ 生命周期
⑦ 插件和目标
⑧ 继承
⑨聚合

六、第一个Maven工程
    ① 目录结构
        Hello
        |---src                               源码          
        |---|---main                      存放主程序
        |---|---|---java                  存放 java 源文件
        |---|---|---resources         存放框架或其他工具的配置文件
        |---|---test                        存放测试程序
        |---|---|---java
        |---|---|---resources
        |---pom.xml                     Maven 工程的核心配置文件

    ② 为什么要遵守约定的目录结构呢?
        Maven 要负责我们这个项目的自动化构建,以编程为例,Maven 要想自动进行编译,那么它必须知道 Java 源文件保存在哪里。
        自定义的东西要想让框架或者工具知道,有两种方法
            a、以配置的方式明确告诉框架
                            <param-value>classpath: spring-context.xml</param-value>
              
            b、遵守框架内部已存在的约定
                            log4j.properties
                            log4j.xml

七、常用的 Maven 命令

        ①注意:执行与构建过程相关的 Maven 命令,必须进入 pom.xml 所在的目录。

        ② 常用命令:
            [1] mvn clean: 清理
            [2] mvn compile: 编译主程序
            [3] mvn test-compile: 编译测试程序
            [4]    mvn test: 执行测试
            [5]    mvn package: 打包
            [6] mvn install:安装
            [7] mvn site: 生成站点

        

八    、关于互联网问题
     ① Maven 的 核心程序中仅仅定义了抽象的生命周期,
                        而具体的操作则是由 Maven 的插件 插件来完成的。
                        可是 Maven 的插件并不包含在 Maven 的核心程序中,在首次使用时需要联网下载。
     ② 当我们执行的 Maven 命令需要用到某些插件时, Maven 核心程序会首先到本地仓库中去找。
     ③ 本地仓库的默认位置:[系统中当前用户的家目录]\.m2\repository
                                          C:\Users\[登录当前系统的用户名]\.m2\repository

     ④ Maven 核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,
                     到中央仓库下载。
    
     ⑤ 如果此时无法连接外网,则构建失败。
     ⑥ 修改默认本地仓库的位置可以让 Maven 核心程序到我们事先准备好的目录下查找插件。
                a、找到 Maven 解压目录 \conf\settings.xml
                b、在settings.xml 文件中找到 ocalRepository 标签
                c、将 <localRepository>/path/to/local/repo</localRepository> 从注释中取出
                d、将标签体内容修改为已经准备好的 Maven 仓库目录。
                     <localRepository>D:\Maven\RepMaven</localRepository>

 

九、POM
   ① 含义:Project Object Model 项目对象模型
    DOM Document Object Model 文档对象模型
   ② pom.xml 对于 Maven 工程是核心配置文件,与构建过程相关的一起设置都
    在这个文件中进行配置。重要程度相当于 web.xml 对于动态 Web 工程。

 

十、坐标
    ① 几何中的坐标
        [1]在一个平面中使用 x、y 两个向量可以唯一的确定平面中的一个点。
        [2]在空间中使用 x、y、z 三个向量可以唯一的确定空间中的一个点。
    ② Maven 的坐标
        使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程。
        [1]groupid:公司或组织的域名倒序+当前项目名称
        [2]artifactId:当前项目的模块名称
        [3]version:当前模块的版本
        <groupId>com.y.maven</groupId>
        <artifactId>Hello</artifactId>
        <version>0.0.1-SNAPSHOT</version>

  ③ 如何通过坐标到仓库中查找 jar 包?
        [1]将 gav 三个向量连起来
            groupId>org.springframework</groupId>
              <artifactId>spring-core</artifactId>
              <version>4.0.0.RELEASE</version>
        [2]以连起来的字符串作为目录结构到仓库中查找
org.springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar
※注意:我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install

 

 

转载于:https://my.oschina.net/u/3387637/blog/906095

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值