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包不会包含依赖)

最新文章

  1. SQL Server-外部联接基础回顾(十三)
  2. freeswitch注册过程分析
  3. 浅谈Android应用保护(零):出发点和背景
  4. MySQL绿色版的安装(mysql-5.6.22-win32.zip)
  5. MongoDB修改器的使用2
  6. 常用awk命令(转)
  7. NYOJ 38布线问题
  8. 在jsfiddle作在线angular测试,蛮有意思的
  9. jquery插件 源码
  10. HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
  11. [置顶] Objective-C ,ios,iphone开发基础:自定义控件:Eg: UIButton
  12. golang中container/list包源码分析
  13. 常用内置函数_eval_exce
  14. spring开启事务时启动报错SAXParseException
  15. Scrapy学习篇(十三)之scrapy+selenum获取网站cookie并保存带本地
  16. Python入门:如何使用第三方库?
  17. 汇编之 eax, ebx, ecx, edx, esi, edi, ebp, esp??
  18. LRN(local response normalization--局部响应标准化)
  19. 文件分享系统(Django)
  20. 现有工程中集成Cordova

热门文章

  1. PMP项目管理——项目范围管理-规划范围管理
  2. Java-杂项-java.nio:java.nio
  3. web应用本质
  4. POJ 3761 Bubble Sort
  5. 顺时针打印矩阵元素(python实现)
  6. springboot项目中使用设计模式一策略模式
  7. Activiti学习笔记9 — UserTask共有任务的使用
  8. Error: setup script specifies an absolute path
  9. 数据库MySQL--数据操作语言DML(插入、修改、删除)
  10. grep每次读取多大的文本