微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Maven-maven基础

一、Maven概述

  Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

将项目开发和管理过程抽象成一个项目对象模型Project Object Model(POM)。

   Maven作用:

  1.项目构建:提供标准的、跨平台的自动化项目构建方式。

  2.依赖管理:方便快捷的管理项目依赖资源包(jar),避免资源间的版本冲突问题。

  3.统一开发结构:提供标准的、统一的项目结构。

   

  仓库:用于存储资源,包含各种jar包

  1.仓库分类

  本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源。

  远程仓库:非本机电脑上的仓库,为本地仓库提供资源。

    中央仓库:Maven团队维护,存储所有资源的仓库。

    私服:部门/公司范围内存储资源的常客,从中央仓库获取资源。

  私服的作用:

    保存具有版权的资源,包含购买或者自主研发的jar。(中央仓库中的jar都是开源的,不能存储具有版权的资源。)

    一定范围内共享资源,仅对内部开放,不对外共享。

   2.坐标

  Maven中的坐标是用于描述仓库中资源的位置。

  Maven中坐标主要组成:

  groupId:定义当前Maven项目隶属于组织名称。(通常是域名反写,例如:org.mybatis)。

  artifactId:定义当前Maven项目名称。(通常是模块名,例如:SMS)。

  version:定义当前项目版本号。

  packaging:定义改姓名的打包方式。

  Maven坐标的作用:

  使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工种交给计算机完成。

  3.本地仓库的位置配置。

  Maven启动后,会自动保存下载的资源到本地仓库。

  认位置:当前目录位置位于,登录用户名所有目录下.m2文件夹中。

<localRepository>${user.home}/.m2/repository</localRepository> 

  自定义位置:当前目录位置位于,D:\maven\repository文件夹中。

<localRepository>D:\maven\repository</localRepository>

  4.远程仓库位置配置

  认仓库配置:认连接的远程仓库位置。

<repositories>
  <repository>
    <id>central</id>
    <name>Central Repository</name>
    <url>https://repo.maven.apache.org/maven2</url>
    <layout>default</layout>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

  镜像仓库配置:可以在setting文件中配置阿里云镜像仓库。

<mirrors>
<!-- 配置具体的仓库的下载镜像-->
  <mirror>
  <!-- 此镜像的唯一标识,用于区分mirror元素 -->
    <id>nexus-aliyun</id>
    <!--对哪种仓库进行镜像,简单说就是替代哪个仓库 -->
    <mirrorOf>central</mirrorOf>
    <!-- 镜像名称-->
    <name>Nexus aliyun</name>
    <!-- 镜像URL -->
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirror>
</mirrors>

  二、IDEA创建Maven项目

   1.依赖管理

  依赖配置:依赖指当前项目运行所需的jar,一个项目可以设置多个依赖。

<dependencies>
    <!-- 在这里添加你的依赖 -->
    <dependency>
        <groupId>ldapjdk</groupId>  <!-- 库名称,也可以自定义 -->
        <artifactId>ldapjdk</artifactId>    <!--库名称,也可以自定义-->
        <version>1.0</version> <!--版本号-->
        <scope>system</scope> <!--作用域-->
        <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath> <!--项目根目录下的lib文件夹下-->
    </dependency> 
</dependencies>

  依赖传递:依赖具有传递性。

  直接传递:在当前项目中通过依赖配置建立依赖关系。

  间接传递:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源。

  依赖传递冲突问题:

    路径优先:当依赖中出现相同的资源时,层级越深,优先级越低、层级越浅,优先级越高。

    声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。

    特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。

  可选依赖:指对外隐藏当前所依赖的资源——不透明。

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <!--true资源可以隐藏-->
    <optional>true</optional>
</dependency>

  排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本——不需要该jar包

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>        

  依赖范围:依赖jar认情况下可以在任何地方使用,可以通过scope标签来设定范围。

  作用范围:

    主程序范围有效(main文件夹范围内)。

    测试范围有效(test文件夹范围内)。

    是否参与打包(package指令范围内)。

     

  依赖范围传递:带有依赖范围的资源在进行传递时,作用范围将受到影响。

    

   2.生命周期与插件

  生命周期:每个生命周期的各个环节都是由各种插件完成。Maven有三个相互独立的生命周期(Maven的这三个生命周期不能看成一个整体)。   

       

  • mvn clean:清理编译的项目。
  • mvn compile:编译项目。
  • mvn test:测试项目(运行测试类)。
  • mvn package:负责将我们的项目打包。
  • mvn install:将这个项目安装到仓库中 。

  Clean生命周期(Clean Lifecycle)
  Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

  Clean生命周期一共包含了三个阶段:

  pre-clean 执行一些需要在clean之前完成的工作。

  clean 移除所有上一次构建生成文件

  post-clean 执行一些需要在clean之后立刻完成的工作。

 

  Default生命周期(Default Lifecycle)
  Default Lifecycle是构建的核心部分,编译,测试,打包,部署等等,Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。

  一些比较重要和常用的阶段:

  compile 编译项目的源代码

  install 将包安装至本地仓库,以让其它项目依赖。

  deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享

  process-test-resources 复制并处理资源文件,至目标测试目录

  process-resources 复制并处理资源文件,至目标目录,准备打包

  test-compile 编译测试源代码

  test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署

  package 接受编译好的代码,打包成可发布的格式,如 JAR

 

  Site生命周期(Site Lifecycle)
  Site Lifecycle 生成项目报告,站点,发布站点站点的文档(站点信息,依赖..)。

  Site生命周期,生成站点信息四个阶段:

  pre-site 执行一些需要在生成站点文档之前完成的工作。

  site 生成项目的站点文档。

  post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。

  site-deploy 将生成站点文档部署到特定的服务器上。

   插件

  例如:Tomcat7运行插件

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.1</version>
      <configuration>
        <port>80</port>
        <path>/</path>
      </configuration>
    </plugin>
  </plugins>
</build>

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐