maven

Mac安装


  • 下载
curl -O http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -xvf  apache-maven-3.3.9-bin.tar.gz
sudo mv -f apache-maven-3.3.9 /usr/local/

  • 编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${PATH}:${MAVEN_HOME}/bin

  • 保存文件,并运行如下命令使环境变量生效:
source /etc/profile

  • 在控制台输入如下命令,一开始会出现报错



  • 再次在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:
mvn -v


maven仓库

  • .m2文件
mvn help:system
ls -la /Users/cjw/.m2/


创建一个Intellij项目


POM文件

xml文件类型, 存放项目的配置信息,


maven生命周期

Maven 生命周期是为了对所有的构建过程进行抽象和统一,开发了一套高度完善的、易扩展的生命周期。这个生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。

Maven 生命周期本身不做任何实际的工作,实际的任务都交给插件来完成。这样的设计,既保证了 Maven 整体框架的轻便,也最大程度的扩展性。


每个生命周期包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。clean生命周期为例,它包含的阶段有 pre-cleancleanpost-clean

  • 当我们调用 pre-clean的时候,只有 pre-clean阶段执行;
  • 当我们调用clean的时候,pre-cleanclean阶段会按顺序执行;
  • 当我们调用 post-clean的时候,pre-cleancleanpost-clean都会按顺序执行;

和生命周期阶段的前后依赖关系相比,cleandefaultsite这三套生命周期本身是相互独立的,我们可以仅仅调用 clean生命周期的某个阶段,或者仅仅调用 default生命周期的某个阶段,而不会对其它生命周期产生任何影响。


clean

清理项目

  • Pre-clean 执行清理前需要完成的工作
  • clean 清理上一次构建产生的文件
  • Post-clean 执行一些清理后需要完成的工作

default

构建项目

  • validate 验证工程是否正确
  • compile 编译项目的源代码
  • test 使用合适的单元测试框架来测试已编译的源代码
  • package 把已编译的代码打包成可以发布的格式, 比如jar或者war
  • verify 运行所有检查, 验证包是否有效
  • Install 安装到maven本地仓库
  • Deploy 部署到远程的仓库, 使得其他开发者或者工程可以共享



site

建立项目站点

阶段 作用
pre-site 在生成项目站点前执行一些工作
site 生成项目站点文档
post-site 在生成项目站点后执行一些工作
site-deploy 将生成项目站点发布到服务器上

常见的maven命令

  • mvn validate 验证项目是否正确


  • mvn package maven打包(jar包)


  • mvn compile 编译


  • mvn test-compile 编译测试代码


  • mvn test 运行测试


  • mvn verify 运行检查


  • mvn clean 清理项目


  • mvn install 安装项目到本地仓库


  • mvn deploy 发布项目到远程仓库


添加项目所需要的jar包


原理

在本地, 指定一个文件夹(maven本地仓库), maven会从远程的中央仓库下载你需要的jar资源到本地, 然后通过maven关联, 将jar包依赖到你的项目中, 避免了你需要将jar包拷贝到lib中, 并通过classpath引入这些jar包的工作


步骤


  • 填写依赖信息到pom文件


  • 下载到本地仓库
  • 项目使用
mvn compile

单元测试

  • 引入 依赖包
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

  • 测试代码
package com.xclass;

import org.junit.Test;

public class AppTest
{
    @Test
    public void test(){
        System.out.println("chenguoliang za gangruan");
    }
}


  • 编译并打包
mvn compile
mvn package

  • 执行代码


原文地址:https://www.cnblogs.com/cjwnb/p/12158721.html