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