MAVEN教程

今天编译多module项目,发现其中一个module的pom需要去远程仓库去获取,而不是 从本地仓库获取,找了好资料,一直没有找到正确的解决方案,所以想着将maven的知识点梳理一下。

Maven简介:

 maven是一种项目管理和整合工具。

 maven为开发者提供了一套完整的构建生命周期框架

 maven皆在于简化工程的构建,并实现标准化,无缝衔接编译,发布,文档生成,团队合作。

环境配置:

系统要求:

jdk:

    maven 3.3要求jdk1.7以上

磁盘:

    maven自身大概需要10M的磁盘空间。初次之外,本地maven仓库需要额外i磁盘,一般需要500m

内存: 无

操作系统: 无

java 安装

maven安装:

  • 下载安装文件,选择最新稳定版本:http://maven.apache.org/download.html
  • 安装
    • Windows:解压文件到你想要安装的位置:D:\Software\apache-maven-3.5.0
    • Linux:解压文件到你想要安装的位置:/usr/local/apache-maven
    • Mac:解压文件到你想要安装的位置:/usr/local/apache-maven
  • 设置 Maven 环境变量(不清楚的自行查找资料)
    • Windows
      配置M2_HOME环境变量:
      M2_HOME=D:\Software\apache-maven-3.5.0;
      将bin目录追加到PATH路径中:%M2_HOME%\bin;
    • Linux
      在/etc/profile文件中添加Maven环境变量,如下所示:
      export M2_HOME=/usr/local/apache-maven/apache-maven-3.5.0
      export PATH=$M2_HOME/bin:$PATH
      然后执行source /etc/profile,使环境变量生效
    • Mac
      在/etc/profile文件中添加Maven环境变量,如下所示:
      export M2_HOME=/usr/local/apache-maven/apache-maven-3.5.0
      export PATH=$M2_HOME/bin:$PATH
      然后执行source /etc/profile,使环境变量生效
    • 验证 Maven 安装(有输出maven版本信息,Java版本信息表示安装成功)
      - Windows : mvn --version
      - Linux : mvn --version
      - Mac : mvn --version

功能:

    项目管理 工具、依赖管理工具,构建工具

优点:

    对第三方依赖进行统一的版本 管理

    统一的构建过程

    统一的项目的目录管理

构建:

     清理: mvn clean

      编译: mvn compile

      测试: mvn test

      部署: mvn deploy

      安装: 将jar安装到本地仓库): mvn install

使用:

Maven 规定了项目的源代码,测试代码,资源文件,编译包输出文件,字节码文件等文件的目录,统一了项目的目录结构

  • 源代码目录 : /src/main/java
  • 资源文件目录 : /src/main/resources
  • 测试代码目录 : /src/test/java
  • 包输出目录 : /target
  • 编译后的字节码输出目录 : /target/classes  注意:资源文件需要再classes下存在,不然报文件不存在错误

POM文件解析:

    POM代表工程对象模型,是使用maven工作时候的基本组建,是一个xml文件,他放在工程的根目录下,文件命名为pom.xml

    POM包含了关于工程和各种配置细节的信息,maven使用这些信息构建工程

    POM包含了目标和插件,当执行一个任务或者目标时,Maven会查找当前目录下的POM,从其中读取所需要的配置信息,然         后执行目标;

在创建POM之前,我们首先确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是工程的唯一标识;

  • 所有的POM文件需要project元素和三个必须的字段:groupId, artifactId,version;
  • 在仓库中的工程标识为groupId:artifactId:version;
  • POM.xml的根元素是 project,它有三个主要的子节点
    • groupId:这是工程组的标识,它在一个组织或者项目中通常是唯一的;
    • artifactId:这是工程的标识,它通常是工程的名称,groupId 和 artifactId 一起定义了 artifact 在仓库中的位置;
    • version:这是工程的版本号,在 artifact 的仓库中,它用来区分不同的版本;

基本配置

  • modelVersion : pom模型版本,maven2和3只能为4.0.0
  • groupId : 组ID,maven用于定位
  • artifactId : 在组中的唯一ID用于定位
  • version : 项目版本
  • packaging: 项目打包方式,有一下值:pom, jar, maven-plugin, ejb, war, ear, rar, par,默认为jar

依赖配置

  • parent:用于确定父项目的坐标
<parent>
    <groupId>com.hyn</groupId>
    <artifactId>SIP-parent</artifactId>
    <relativePath></relativePath>
    <version>0.0.1-SNAPSHOT</version>
</parent>
groupId:父项目的构件标识符
artifactId:父项目的唯一标识符
relativePath:Maven首先在当前项目的找父项目的pom,然后在文件系统的这个位置(relativePath),然后在本地仓库,再在远程仓库找
version:父项目的版本
  • modules : 有些maven项目会做成多模块的,这个标签用于指定当前项目所包含的所有模块。之后对这个项目进行的maven操作,会让所有子模块也进行相同操作
<modules>
   <module>com-a</module>
   <module>com-b</module>
   <module>com-c</module>
</modules>
  • properties : 用于定义pom常量
<properties>
    <java.version>1.7</java.version>
</properties>
这个常量可以在pom文件的任意地方通过${java.version}来引用
  • dependencies : 项目相关依赖配置,如果在父项目写的依赖,会被子项目引用,一般父项目会将子项目公用的依赖引入
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>
  • dependencyManagement : 在父模块中定义后,子模块不会直接使用对应依赖,但是在使用相同依赖的时候可以不加版本号,这样的好处是,父项目统一了版本,而且子项目可以在需要的时候才引用对应的依赖
父项目:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
子项目:
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependency>

构建配置

  • build : 用于配置项目构建相关信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值