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

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

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

Maven的构建流程shell

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

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

  • clean
  • compile
  • test

一个Lifecycle能够包含clean,compile,test三个Phase。有一些phase依赖于其余的Phase,有一些是独立的,如:maven

  • 要执行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在执行过程当中什么也不作。.net

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

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

没有依赖其余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包不会包含依赖)
相关文章
相关标签/搜索