zoukankan      html  css  js  c++  java
  • Maven(一)-- 基础知识

    一、Maven的基本概念

      Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

      1.项目构建

      项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

      2.依赖管理

      3.使用Maven的好处

      1) Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

      2) Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

      3) 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情。 

      4) 使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

    二、Maven的简单使用

      1.Maven项目的目录约定

      |----src
        | |----main
          | | |----java ——存放项目的.java文件
          | | |----resources ——存放项目资源文件,如spring, hibernate配置文件
        | |----test
          | | |----java ——存放所有测试.java文件,如JUnit测试类
          | | |----resources ——存放项目资源文件,如spring, hibernate配置文件
      |----target ——项目输出位置
      |----pom.xml ----用于标识该项目是一个Maven项目

      2.Pom.xml配置

    <?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <!--所有的Maven项目都必须配置这四个配置项-->
         <modelVersion>4.0.0</modelVersion>
         <!--groupId指的是项目名的项目组,默认就是包名-->
         <groupId>com.dongnao.jack</groupId>
         <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
         <artifactId>mavenProjeck</artifactId>
         <!--version指的是版本,这里使用的是Maven的快照版本-->
         <version>SNAPSHOT-0.0.1</version>
    
         <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>compile/test/provided/runtime</scope>
            </dependency>
         </dependencies>
    </project>

      3.maven命令

      mvn compile

      mvn test

      mvn package:一条龙服务,包括编译、测试、打包。但是并没有把包同步到仓库

      mvn install:一条龙服务,包括编译、测试、打包。并且把包同步到仓库

      mvn clean 

    三、maven的概念模型

      

    四、Maven的仓库布局

      根据maven坐标定义每个构建在仓库中唯一存储路径

        路径为:groupId/ artifactId/version/ artifactId-version.packaging

        http://search.maven.org  从中央仓库中搜索jar包

      创库分类

        本地仓库,默认在/.m2/repository/,每个用户只有一个本地仓库

        远程仓库

        中央仓库:http://repo1.maven.org/maven2   central

        私服:是一种特殊的远程仓库,架设在局域网内的仓库

        镜像:用来替代中央仓库,速度一般都比中央仓库快。 Mirror,一般都是国内,例如:阿里的maven镜像

    五、Maven三大生命周期

      生命周期Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

      1) Clean在进行真正的构建之前进行一些清理工作。 

      2) Default构建的核心部分,编译,测试,打包,部署等等。 

      3) Site生成项目报告,站点,发布站点。

    六、Maven坐标

      Maven坐标主要组成:

    • groupId:定义maven的项目,可以用包名
    • artifactId:定义项目中的一个模块,一般都是工程名
    • version:版本
    • packaging:定义打包方式

      坐标的作用:用来唯一标识一个构件,在依赖里面根据坐标来找需要的构件。

    七、Maven依赖

      根据maven坐标找依赖的构件

      dependency依赖中scope范围

      1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效。

      2.test:测试依赖范围。只对于测试classpath有效,只对测试代码有效

      3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api,打包的时候这个包不会打进去

      4.runtime:运行时提供。例如:jdbc驱动

      Compile、runtime打包会打进去,test、provided打包不会打进去。

      依赖冲突解决:

     1.路径最近者优先   CBA,C依赖B,B依赖A,会先用B的jar包

         2.路径相同,第一声明者优先:CB,CA,必须看B,A在C中哪一个先声明

    八、Maven聚合和继承

    主要是可以起到公共配置文件的抽取作用,jar包的统一管理

    注意:

        1.dependencyManagement中定义的依赖子module不会共享

        2.dependencies中定义的依赖子module可以共享

        3、jar包的统一管理,把jar抽取到parent中

       继承:

      <parent>

        <groupId>com.sz.buss</groupId>

        <artifactId>parent</artifactId>

        <version>0.0.1-SNAPSHOT</version>

        <relativePath>../parent</relativePath>

      </parent>

      聚合:

      <modules>

        <module>hello1Maven</module>

        <module>maven1</module>

      </modules>

    九、Maven web项目

      自动部署到tomcat下面并运行

    <build>
        <finalName>web</finalName>
        <plugins>
              <plugin>
                  <groupId>org.codehaus.cargo</groupId>
                  <artifactId>cargo-maven2-plugin</artifactId>
                    <version>1.2.3</version>
                    <configuration>
                        <container>
                            <containerId>tomcat5x</containerId>
                            <home>D:/Program Files/Apache Software Foundation/Tomcat 5.0</home>
                        </container>
                        <configuration>
                            <type>existing</type>
                            <home>D:/Program Files/Apache Software Foundation/Tomcat 5.0</home>
                        </configuration>
                    </configuration>
                    <executions>  
                      <execution>  
                          <id>cargo-run</id>  
                          <phase>install</phase>  
                          <goals>  
                              <goal>run</goal>  
                          </goals>  
                      </execution>  
                  </executions>
              </plugin>
          </plugins>
      </build>

     

  • 相关阅读:
    C#中 ()=>的含义
    大白话系列之C#委托与事件讲解(三)
    大白话系列之C#委托与事件讲解(二)
    C#委托
    php.ini
    mac 登陆phpmyadmin 提示 mysqli_real_connect(): (HY000/2002): No such file or directory
    mac 安装 mysql 5.7
    Mac下的PHP的配置与运行
    phpstorm 2019.1 mac
    激活 phpstorm2019.1 win10
  • 原文地址:https://www.cnblogs.com/xbq8080/p/6677172.html
Copyright © 2011-2022 走看看