zoukankan      html  css  js  c++  java
  • Maven基础1

    Maven的主要功能概念及使用

    一、maven的功能?

    • 构建工具(打包项目)
    • 依赖管理(jar包依赖)
    • 项目信息聚合

    构建工具:

    [清理]-->[编译]-->[测试]-->[报告]-->[打包]-->[部署]
    

    依赖管理

    管理项目中所使用的jar包(主要作用)

    项目信息聚合

    版本信息、开发者信息、测试报告.......等等

    二、maven的安装

    1. 安装maven

    1. 下载解压 maven 压缩包(http://maven.apache.org/)
    2. 配置环境变量:
    • ①MAVEN_HOME :maven的安装地址
    • ②path:%MAVEN_HOME%in

    Maven本地仓库的配置:
    maven的仓库一般在C盘用户下---->用户名---->.M2文件--->resporsitry,如果没有出现,去cmd中随便运行个Maven命令就会自动生成,不需要自己建(例如命令行输入命令:mvn clean)

    默认位置:C盘--->用户--->自己的用户名--->.m2---->resporsitry

    在命令行执行如下命令:

    mvn --version

    如出现类似如下结果,则证明 maven 安装正确/成功。

    Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
    Maven home: D:Program Filesapache-maven-3.5.0in..
    Java version: 1.8.0_144, vendor: Oracle Corporation
    Java home: C:Program FilesJavajdk1.8.0_144jre
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    

    如需更改本地仓库位置

    在如下路径中找到settings.xml配置文件:

    Maven的安装路径---->conf---->settings.xml
    找到第53行代码,找到/path/to/local/repo,
    把标签内的替换成仓库的地址。

    2. pom文件

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。

    pom.xml基础配置

    <?xml version="1.0" encoding="UTF-8"?>   <!--必须第一行-->
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">  <!--pom.xml的约束文件-->
    
          <!-- 模型版本。 -->  
        <modelVersion>4.0.0</modelVersion>  
    
        <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 : ${file.encoding} -->  
        <properties>  
            <file.encoding>UTF-8</file.encoding>  
            <junit.version>4.11</junit.version>  
        </properties>  
    
         <!-- 定义本项目的依赖关系 -->  
        <dependencies>  
      
            <!-- 每个dependency都对应这一个jar包 -->  
            <dependency>  
      
                <!--一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索, 然后引入你的工程。 -->  
               
               <!-- 公司或者组织的唯一标志-->
                <groupId>junit</groupId>  
            
            <!-- 项目的 唯一 ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> 
                <artifactId>junit</artifactId>  
              
              <!-- 项目的版本号 -->  
                <version>${junit.version}</version>  <!--这里就可以引用上面定义的常量-->
      
                <!-- jar包的依赖范围 -->  
                <scope>test</scope>  
      
            </dependency>  
      
        </dependencies>  
    
    
        <build>
    
        
        <finalName>${project.artifactId}</finalName>
    
         <!--使用的插件列表 。 -->  
        <plugins>
            <plugin>
             <!-- tomcat 7 插件 -->
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/${project.artifactId}</path>
                    <uriEncoding>UTF-8</uriEncoding>
                </configuration>
            </plugin>
        </plugins>
    
    </build>
    

    三、maven项目的目录结构:

    • Java程序的目录结构

    • Java-Web程序的目录结构

    四、Maven核心概念

    1. 坐标

    在 maven 中坐标就是为了定位一个唯一确定的 jar 包。坐标的组成部分有:

    * groupId:定义当前Maven组织名称
    * artifactId:定义实际项目名称
    * version:定义当前项目的当前版本
    

    2. 依赖管理

    依赖管理就是对项目中 jar 包的管理。可以在 pom 文件中定义 jar 包的坐标,管理依赖。

    依赖声明主要包含如下元素:

    <dependencies>
    
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
      </dependency>
    
    </dependencies>
    

    3. 依赖范围

    依赖范围(Scope) 对主代码ClassPath有效 对测试代码ClassPath有效 被打入jar / war包中 例子
    compile yes yes yes log4j
    test - yes - junit
    privided yes yes - servlet-api
    runtime - - yes jdbc驱动实现类

    4. 生命周期

    Maven 生命周期就是为了对所有的构建过程进行抽象和统一。这个过程分为三个独立阶段(也叫生命周期):

    • Clean Lifecycle:在进行真正的构建之前进行一些清理工作。
    • Default Lifecycle:构建的核心部分,编译,测试,打包,部署等等。
    • Site Lifecycle:生成项目报告,站点,发布站点。

    这三个阶段是相互独立的,这意味着,你可以仅仅调用 clean 来清理工作目录,仅仅调用 site 来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

    三个阶段中,Default Lifecycle 是核心。

    这三个阶段,每个阶段中又各自分为不同的小步骤。当执行某一个小步骤时,它之前的小步骤都会被执行。Default Lifecycle 中包含了几十个小步骤,其中重要和常用的步骤(先后顺序)是:

    • ...
    • compile: 编译项目的源代码。
    • ...
    • test: 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
    • ...
    • package: 接受编译好的代码,打包成可发布的格式,如 JAR 。
    • ...
    • install: 将包安装至本地仓库,以让其它项目依赖。
    • ...

    5. 插件

    Maven 本质上是一个插件的框架/平台。

    例如:

    • mvn compile 这个命令,就是由 maven-compiler-plugin 插件提供的。
    • mvn test 这个命令,就是由 maven-surefire-plugin 插件提供的。
    • mvn package 这个命令,就是由 maven-jar-plugin / maven-war-plugin 插件提供的。

    添加插件:

    <build>
      <plugins>
    
        <plugin>
          <!-- 配置插件 -->
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <path>/demo</path>
            <port>8080</port>
            <uriEncoding>UTF-8</uriEncoding>
            </configuration>
          </plugin>
          
        <plugin>...</plugin>
    
        <plugin>...</plugin>
    
      <plugins>
      ...
    </build>
    

    Maven 除了内置/自带的插件外,还可以“安装”第三方插件。任何一个 Maven 动作都是交由具体的插件去完成的。

    6.Maven仓库

    用来统一存储所有Maven共享构建的位置就是 Maven 仓库。

    Maven 仓库分为

    • 本地仓库 ~/.m2/repository 每个用户只有一个本地仓库 ~代表C盘下的用户

    • 远程仓库

    1. 中央仓库:Maven 默认的远程仓库 http://repo1.maven.org/maven2
    2. 私服:是一种特殊的远程仓库,它是架设在局域网内的仓库(例如公司可能会架设私服仓库)
    • 以下网站可查询每个项目的坐标
    1. https://mvnrepository.com/
    2. https://maven.aliyun.com/mvn/search

    中央仓库位置修改(修改 settings.xml 配置文件)

    <mirrors>
      <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
    </mirrors>
    

    maven仓库用一句话来概括:

    Maven项目中会将所需的jar包放到本地仓库,如果没有会到局域网私服仓库中寻找,有的话就带一份回来放入本地仓库。私服仓库没有的话就去中央仓库,如果有就带一份回来放在本地仓库。

    五、Maven命令

    在使用终端时,Maven 命令需要在 pom.xml 所在目录中执行以下命令。

    • mvn compile
    1. 执行 mvn compile 命令,完成编译操作
    2. 执行完毕后,会生成 target 目录,该目录中存放了编译后的字节码文件(.class文件)。
    • mvn clean
    1. 执行 mvn clean 命令,完成清理操作。
    2. 执行完毕后,会将 target 目录删除。
    • mvn test
    1. 执行 mvn test 命令,完成单元测试操作
      2.执行完毕后,会在 target 目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)。
    • mvn package
    1. 执行 mvn package 命令,完成打包操作
    2. 执行完毕后,会在 target 目录中生成一个文件,该文件可能是 jar、war 。
    • mvn clean compile
    1. 组合指令,等价于先后执行:mvn clean 和 mvn compile 。通常应用于上线前执行,清除测试类
    • mvn clean test
    1. 组合指令,等价于先后执行:mvn clean 和 mvn test,通常应用于测试环节。
  • 相关阅读:
    SSH框架搭建全过程详解
    SpringMVC项目配置全过程详解
    <抽奖奇遇>
    extJS--尚
    CentOS 7.3安装指南
    javaWeb项目之图书管理系统(附视频讲解)
    Swing记事本项目
    五、PTA实验作业(结构体)
    四、PTA实验作业(指针)
    三、PTA实验作业(数组)
  • 原文地址:https://www.cnblogs.com/whitespaces/p/11737428.html
Copyright © 2011-2022 走看看