廖雪峰Java12maven基础-1maven入门-3构建流程

maven是一个Java项目管理和构建工具:

  • 标准化项目结构
  • 标准化构建流程(编译、打包、发布)
  • 依赖管理

Maven的构建流程

  • clean 删除所有编译生成的文件
  • compile 编译源码、编译测试源码
  • test 运行测试
  • package 打包为jar/war

maven的生命周期Lifecycle是由一系列phase构成:

  • clean
  • compile
  • test

一个Lifecycle可以包含clean,compile,test三个Phase。有一些phase依赖于其他的Phase,有一些是独立的,如:

  • 要执行test,必须先执行compile
  • 执行clean,是不需要执行其他的Phase的

使用maven构建项目就是执行指定的Phase:

  • mvn compile: 将执行compile这个Phase
  • mvn clean test: 将执行clean、compile、test这些Phase

执行一个Phase实际上是执行了一系列Phase,直到该Phase为止:例如执行mvn compile

  • validate
  • initialize
  • generate-sources
  • process-sources
  • generate-resources
  • process-resources
  • compile

因为我们通常没有在配置文件pom.xml中定义相关的设置,所以这些Phase在执行过程中什么也不做。

maven执行一个Phase又会触发一个或多个Goal

如何脱离IDE,使用命令行通过maven构建项目?

没有依赖其他jar,可以直接运行成功

package com.forme;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}
mvn clean package
java -cp ./OneWorld-1.0-SNAPSHOT.jar  com.forme.App

如果引入其他依赖,因为这种方式打出的jar包不包含任何依赖,因此会执行失败

package com.forme;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        Log log = LogFactory.getLog(App.class);
        log.info("Hello,world!");
    }
}

总结:

  • 理解maven的概念:Lifecycle\Phase\Goal
    * 使用maven构建项目就是按顺序执行一系列Phase
    * 执行Lifecycle就是按顺序执行一系列Phase
    * 每执行一个Phase,都会执行该Phase绑定的若干Goal
    * Goal是最小执行任务单元
  • 常用的命令:mvn clean test(打出的jar包不会包含依赖)
posted on 2019-06-20 22:29  singleSpace  阅读(258)  评论(0编辑  收藏  举报