zoukankan      html  css  js  c++  java
  • Maven项目构建利器04——Maven的一些核心概念

    1.坐标

    1)数学上的坐标:

      [1].在平面上. 使用X,Y两个向量可以唯一的定位平面上的任意一个点

      [2]在空间中, 使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点

    2)Maven中的坐标:

      使用下面三个向量在查看中唯一定位一个Maven工程,简称GAV

      [1]groupid : 公司或组织域名倒序 + 项目名

    1 <groupid>com.wzy.maven</groupid>

      [2]artfactid : 模块

    1 <artifactid>Hello</artifactid>

      [3]version : 版本

    1 <version>1.0.0</version>

      Maven工程的坐标与仓库中路径的对应关系

    1 <groupid>org.springframework</groupid>
    2 <artifactid>spring-core</artifactid>
    3 <version>4.0.0.RELEASE</version>

      对应的路径是:groupid / artifactid / version / artifactid-version.jar

    1 org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar

    2.POM

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

    3.仓库

    1)什么是仓库?

    Maven仓库就是放置所有jar文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖jar.

    2)仓库的分类:

      [1]本地仓库: 当前电脑上部署的查看目录, 为当前电脑上所有Maven工程服务

      [2]远程仓库:

        (1).私服: 架设在当前局域网环境下, 为当前局域网范围内所有Maven工程服务

        ​(2)中央仓库: 架设在Internet上, 为全世界所有Maven工程服务

        (3)中央仓库镜像:架设在各大洲, 为中央仓库分担流量, 减轻中央仓库的压力, 同时更快的响应用户请求(如aliyun镜像)

    3)仓库中保存的内容

      [1]Maven自身所需要的插件

      [2]第三方框架或工具的jar包

      [3]我们自己开发的Maven工程

    4.依赖

    1)什么是依赖?

      Maven解析依赖信息时会到本地的仓库中查找被依赖的jar包,对于我们自己开发的maven工程, 使用mvn instail命令安装后就可以进入仓库。

    1 <dependency>
    2     <groupId>junit</groupId>
    3     <artifactId>junit</artifactId>
    4     <version>4.12</version>
    5     <scope>test</scope>
    6 </dependency>

    2)依赖的范围

      Maven依赖有以下几种范围,compile、test、provided、runtime、system,这五种范围分表示了,在项目构建过程当前依赖所起的作用,其中Maven中默认的依赖范围是compile

      [1]compile范围依赖

        对主程序是否有效:有效

        对测试程序是否有效: 有效

        是否参与打包: 参与

        是否参与部署: 参与

        典型例子: spring-core

      [2]test范围依赖

        对主程序是否有效: 无效

        对测试程序是否有效: 有效

        是否参与打包: 不参与

        是否参与部署: 不参与

        典型例子: junit

      [3]provided范围依赖

        对主程序是否有效: 有效

        对测试程序是否有效: 有效

        是否参与打包: 不参与

        是否参与部署: 不参与

        典型的例子: servlet-api.jar

      [4]runtime范围依赖

        对主程序是否有效: 有效

        对测试程序是否有效: 有效

        是否参与打包: 参与

        是否参与部署: 参与

        典型的例子: JDBC驱动

      [5]system范围依赖

        对主程序是否有效: 有效

        对测试程序是否有效: 有效

        是否参与打包: 不参与

        是否参与部署: 不参与

        典型的例子: 手动引入的jar而非在仓库中查找到的

    3)关于system依赖范围的说明

      上面几种依赖范围比较特殊的依赖范围就是system,它的作用基本和provided类似,但是需要手动引入jar包的路径,用法如下,通常不建议使用,因为最好的做法是通过Maven在本地仓库引入jar包。

    1 <dependencies>
    2   <dependency>
    3    <groupId>javax.sql</groupId>
    4    <artifactId>jdbc-stdext</artifactId>
    5    <version>2.0</version>
    6    <scope>system</scope>
    7    <systemPath>${java.home}/lib/rt.jar</systemPath>
    8   </dependency>
    9 </dependencies>
  • 相关阅读:
    [算法导论]红黑树实现(插入和删除) @ Python
    [算法导论]二叉查找树的实现 @ Python
    [leetcode] Min Stack @ Python
    [leetcode]Find Minimum in Rotated Sorted Array II @ Python
    [leetcode]Find Minimum in Rotated Sorted Array @ Python
    [leetcode]Maximum Product Subarray @ Python
    业余办一个【编程语言+数据结构+算法】培训班怎么样?
    [算法导论]merge sort @ Python
    聚合页是什么?网站聚合页如何做?网站聚合页SEO完全实践指南
    SEO实验:相关性的搜索结果静态页面是否也会在百度劲风算法的处理之中?
  • 原文地址:https://www.cnblogs.com/fengyun2019/p/10906803.html
Copyright © 2011-2022 走看看