zoukankan      html  css  js  c++  java
  • 01.Maven的初步使用

    一、概念

    1.0 Maven是什么

      Maven 是一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西。

     

    2.0 Maven的生命周期

      maven把项目的构建划分为不同的生命周期(lifecycle)。粗略一点的话,它这个过程(phase)包括:编译、测试、打包、集成测试、验证、部署。maven中所有的执行动作(goal)都需要指明自己在这个过程中的执行位置,然后maven执行的时候,就依照过程的发展依次调用这些goal进行各种处理。

      这个也是maven的一个基本调度机制。一般来说,位置稍后的过程都会依赖于之前的过程。当然,maven同样提供了配置文件,可以依照用户要求,跳过某些阶段。

    3.0 Maven的标准工程结构

    Maven的标准工程结构如下:

      pom.xml(maven的核心配置文件)

      src

        main

          java(java源代码目录)

          resources(资源文件目录)

        test

          java(单元测试代码目录)

      target(输出目录,所有的输出物都存放在这个目录下)

        classes(编译后的class文件存放处)

    4.0 Maven的"约定优于配置"

      所谓的"约定优于配置",在maven中并不是完全不可以修改的,他们只是一些配置的默认值而已。但是除非必要,并不需要去修改那些约定内容。maven默认的文件存放结构如下:

      每一个阶段的任务都知道怎么正确完成自己的工作,比如compile任务就知道从src/main/java下编译所有的java文件,并把它的输出class文件存放到target/classes中。

      对maven来说,采用"约定优于配置"的策略可以减少修改配置的工作量,也可以降低学习成本,更重要的是,给项目引入了统一的规范。

    5.0 Maven坐标

    maven使用如下几个要素来唯一定位某一个输出物:

    5.1 groudId

    定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一关系,一个实际项目往往会被划分为多个模块。

    5.2 artifactId 

    定义实际项目中的一个Maven项目,即当前项目,推荐使用实际项目名作为artifactId的前缀。

    5.3 version 

    定义当前项目所处的版本。

    5.4 packaging 

    定义项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

    二、安装

    2.0 配置环境变量

    注意:安装maven之前,必须先确保你的机器中已经安装了JDK

    1.解压压缩包(以apache-maven-3.3.9-bin.zip为例)

    2.添加环境变量MAVEN_HOME,值为apache-maven-3.3.9的安装路径

                             

    3.在Path环境变量的变量值末尾添加%MAVEN_HOME%in

    4.在cmd输入mvn –version,如果出现maven的版本信息,说明配置成功。

    2.1 本地仓储及镜像仓库配置

    中央仓库访问较慢,一般使用国内淘宝的

    下载的jar包,都会统一存放到本地仓库中。我们需要配置本地仓库的位置。

    打开maven安装目录,打开conf目录下的setting.xml文件。

      C:Program FilesJavaapache-maven-3.3.9新建 .m2目录
      settings.xml--> 55: <localRepository>F:javamaven epository</localRepository>   本地 jar包存放地址
              159: <mirror>
                  <id>UK</id>
                  <name>UK Central</name>
                  <url>http://uk.maven.org/maven2</url>
                    <mirrorOf>central</mirrorOf>
                </mirror>

    以下阿里云仓库下载较快

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

    三、pox.xml配置详解

     modelVersion是4.0.0,这是当前仅有的可以被Maven2&3同时支持的POM版本,它是必须的。

     1 <project xmlns="http://maven.apache.org/POM/4.0.0"
     2          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
     4             http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6     
     7     <!-- 基本设置 -->
     8     <groupId>反写的公司名+项目名</groupId>
     9     <artifactId>项目名+模块名</artifactId>
    10 <!-- 0.0.1
    11       大版本号、分支版本号、小版本号
    12       snapshot快照
    13       alpha内部测试
    14       beta公测
    15       Release稳定
    16       GA正式发布
    17  -->
    18     <version>...</version>
    19 <!--默认jar
    20      war zip pom
    21  -->
    22     <packaging>...</packaging>
    23 
    24     <dependencies>
    25         <dependency>
    26             <groupId>org.springframework</groupId>
    27             <artifactId>spring-context</artifactId>
    28             <version>3.2.4.RELEASE</version>
    29             <type>jar</type>
    30             <!-- 依赖范围
    31                 1. compile:没有声明时默认,对于编译、运行、测试三种classpath都有效;eg:spring-core
    32                 2. test:测试依赖范围,只对测试classpath有效;eg:JUnit
    33                 3. provideed:已提供依赖范围,对编译和测试classpath有效;eg:servlet-api
    34                 4. runtime:运行时依赖,对测试和运行classpath有效;eg:jdbc驱动实现
    35                 5. system:系统依赖范围:和provideed一致,但是必须通过systemPath元素显式指定依赖文件路径,不通过maven仓库解析,可能造成不可移植
    36                 <scope>system</scope>
    37                 <systemPath>${java.home}/lib/rt.jar</systemPath>
    38              -->
    39             <scope>test</scope>
    40             <!-- 设置依赖是否可选  true/false 默认false 根据代码单一性原则 一般不设置true-->
    41             <optional></optional>
    42             <!-- 排除传递性依赖,有些jar包依赖另一些jar,而这些jar在项目中已显式引入,为避免重复可选择过滤掉 -->
    43             <exclusions>
    44                 <exclusion>
    45                     <groupId></groupId>
    46                     <artifactId></artifactId>
    47                 </exclusion>
    48             </exclusions>
    49         </dependency>
    50     </dependencies>
    51 
    52 
    53 
    54     <parent>...</parent>
    55     <dependencyManagement>...</dependencyManagement>
    56     <modules>...</modules>
    57     <properties>...</properties>
    58     
    59     <!-- 构建过程的设置 -->
    60     <build>...</build>
    61     <reporting>...</reporting>
    62     
    63     <!-- 项目信息设置 -->
    64     <name>...</name>
    65     <description>...</description>
    66     <url>...</url>
    67     <inceptionYear>...</inceptionYear>
    68     <licenses>...</licenses>
    69     <organization>...</organization>
    70     <developers>...</developers>
    71     <contributors>...</contributors>
    72     
    73     <!-- 环境设置 -->
    74     <issueManagement>...</issueManagement>
    75     <ciManagement>...</ciManagement>
    76     <mailingLists>...</mailingLists>
    77     <scm>...</scm>
    78     <prerequisites>...</prerequisites>
    79     <repositories>...</repositories>
    80     <pluginRepositories>...</pluginRepositories>
    81     <distributionManagement>...</distributionManagement>
    82     <profiles>...</profiles>
    83 </project>
    pom.xml

    2017-08-22 22:15:53

     

     

     

     

     

     

  • 相关阅读:
    LeetCode 4. Median of Two Sorted Arrays
    LeetCode 67. Add Binary
    LeetCode 66. Plus One
    Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)
    Linux驱动之一个简单的输入子系统程序编写
    Linux驱动之输入子系统简析
    Linux驱动之定时器在按键去抖中的应用
    Linux驱动之同步、互斥、阻塞的应用
    Linux驱动之异步OR同步,阻塞OR非阻塞概念介绍
    Linux驱动之异步通知的应用
  • 原文地址:https://www.cnblogs.com/hy-space/p/7413991.html
Copyright © 2011-2022 走看看