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

廖雪峰Java12maven基础-1maven入门-3构建流程的更多相关文章

  1. 廖雪峰Java12maven基础-1maven入门-1maven介绍

    1.Java项目: * 1.1.首先确定引入哪些依赖包,如commons-logging, log4j, selenium * 1.2.确定项目的目录结构 * 1.3.配置环境:如JDK的版本号 * ...

  2. 廖雪峰Java12maven基础-1maven入门-2依赖管理

    maven 如果我们的项目依赖第三方的jar包: Commons Logging发布的jar包在那里下载? 使用Log4j需要哪些jar包 其他依赖:junit,Javamail,MySQL驱动... ...

  3. 廖雪峰Java12maven基础-2maven进阶-1使用插件

    1.maven的Lifecycle,Phase和Goal: 使用maven构建项目就是执行Lifecycle 执行Lifecycle就是按顺序执行一系列Phase 每执行一个Phase,都会执行该Ph ...

  4. 廖雪峰Java12maven基础-2maven进阶-2模块管理

    1. 把大项目拆分为模块是降低软件复杂度的有效方法 在Java项目中,我们通常会会把一个项目分拆为模块,这是为了降低软件复杂度. 例如:我们可以把一个大的项目氛围module-a, module-b, ...

  5. git入门笔记汇总——(廖雪峰博客git入门)

    本文内容是对廖雪峰老师Git教程做的笔记,外加一些自己的学习心得,还抱着学以致用的心态来实践一番 如有显示错误 请移步本人github:git教程小结 Git学习笔记 Git简介 安装Git 创建版本 ...

  6. 廖雪峰Java15JDBC编程-2SQL入门-2insert/select/update/delete

    1. INSERT用于向数据库的表中插入1条记录 insert into 表名 (字段1,字段2,...) values (数据1,数据2,数据3...) 示例 -- 如果表存在,就删除 drop t ...

  7. 廖雪峰Java15JDBC编程-2SQL入门-1SQL介绍

    1.SQL:结构化查询语言 Structured Query Language 针对关系数据库设计 各种数据库基本一致 允许用户通过SQL查询数据而不关心数据库底层存储结构 1.1 SQL使用: 可以 ...

  8. 廖雪峰Git入门教程

    廖雪峰Git入门教程  2018-05-24 23:05:11     0     0     0 https://www.liaoxuefeng.com/wiki/00137395163059296 ...

  9. 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...

随机推荐

  1. [zz]winform导入excel

    winfrom导入excel内容,要求能够excel中多个工作簿的内容.代码如下: #region 导入excel数据 private void button2_Click(object sender ...

  2. 2D转换中的translate里调用matrix()的用法

    一开始,经常看到大佬们用matrix的方法,当时完全不会,不知道如何写.到后面,发现都是这样用,导致只能去认真看一下这个东西怎么用,要不然完全跟不上的节奏啊.因此建议大家去看下这篇文章,写的挺不错的, ...

  3. static/extern&const个人理解

    //const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p) static NSString *const keyA = @"keyA"; static NSString ...

  4. 日志框架一logback配置和使用

    把logback或者log4j放在src/main/resources下,Spring容器就可以自动加载日志文件. 前言 Logback是由log4j创始人设计的又一个开源日志组件, 比log4j的性 ...

  5. SQL Server DOC

    { https://docs.microsoft.com/zh-cn/sql/sql-server/index?view=sql-server-ver15 }

  6. CSS压缩

    通过W3C 统一验证工具的检测没有错误后,为了提高加载速度和节约空间(相对来说,css量很少的情况下,几乎没啥区别),可以通过css压缩工具把css进行压缩. w3c css压缩 http://too ...

  7. 计数dp+概率+大数——(抽屉问题解的个数)zoj3380

    难的地方在于计数dp..给定范围[1,n]的数去填m个位置,要求不能出现超过I个相同的数, 那就用dp[i][j]表示在阶段i,已经填了j个位置的可能解法,那么只要枚举i填的位置数k∈[0,min(j ...

  8. NOI2014

    听说14,15年的题是最简单的,然后除了提答以外的不那么水的题都是以前讲过.做过的,都比较好想到,但是我实现起来却有各种Bug,也完全不能在5h里AC...太弱了 [NOI2014]起床困难综合症 纯 ...

  9. QT中QString与string的转化,解决中文乱码问题

    在QT中,使用QString输出到控件进行显示时,经常会出现中文乱码,网上查了一圈,发现大部分都是针对QT4增加4条语句:</span> [cpp] view plain copy QTe ...

  10. js 定位到某个锚点的方法

    html页面内可以设置锚点,锚点定义 Html代码  ? 1 <a name="firstAnchor">&nsbp;</a> 锚点使用 Html代 ...