博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven使用心得
阅读量:4319 次
发布时间:2019-06-06

本文共 1910 字,大约阅读时间需要 6 分钟。

1. Maven 是什么?

 Maven 是一个Java 项目构建工具,那么什么叫java 项目的构建工具呢, 简单的说就是通过调用JVM的封装好的命令(比如jar,javac..)命令来编译,打包成jar或者war包。

 所以说如果不是用maven 去构建项目的话, 我们就只能使用jdk底层提供的命令去打包我们用eclipse 或则别的IDE开发的项目了,这样做的话会很繁琐。

 

2. Maven 相关概念理解和特点

 特点:

 a. 约定优于配置

 这个特性我觉得体现在以下方面,第一是maven 的项目目录结构如下:

 

这个目录结构已经约定好了,从名字可以看出main/java 下方的是项目的类文件,main/resource放的是资源文件,test/java放的是测试代码,test/resource放的是测试用的资源文件。

第二点体现约定优于配置的地方是Maven 的life cycle,phase,goal 这几个概念的关系。

Life cycle:maven项目构建的生命周期,一言以蔽之,执行一条maven命令经历了那些phase(阶段),所以life cycle 是由phase 组成的

Phase: 把一个项目的构建过程,分成好几个阶段,validate compile test package verify install deploy 主要有这些个阶段。按照约定的这个顺序, maven 执行的任何一个phase , 前面的phase 都会被重新执行一次。

比如说 maven install , 这个构建的生命周期就是 validate compile test package verify install。

goal :组成phase 的基本单位

validate: 看看项目有没有编译错误

compile: 把*.java 文件编译成*.class 文件放到对应的target 目录下面

test: 跑写的措施代码,比如说junit test case

package :把项目打成一个jar 或者一个war

install :把打成的jar 或者war 放到本地的仓库(默认可以在你的user 目录下找到一个.m 文件夹,就是你的本地仓库的位置)

deploy: 把打成的war 或者jar 发布到远程的私服上面。

 

b.把项目抽象成一个对象

 Maven 使用pom.xml (project object model)文件来描述整个项目,可以把整个项目看做一个对象,把这个pom.xml 文件看作一个对象。每个节点都是一个成员变量。比如dependency,plugins。

 

3.Maven 环境的搭建

  a. Maven jar的管理是这样一个过程,首先会从本地仓库里面去找jar,如果没有找到,就会从私服上面去找依赖的jar,在没有就回去从中央仓库下面去找。其关系过程如下图:

通常情况下私服是可以配置的在maven 的setting.xml 文件中,比如说我就在我的文件下面这么配置的。中央仓库就是maven 默认的一个仓库。

<mirrors>

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

2. Maven 环境变量的配置,由于maven 是一个纯java项目,所以首先需要安装好jdk,环境变量的配置可以通过在网上搜索对应的教程,最后通过mvn -version 来验证maven 是不是安装好了。

3. Eclipse + Maven 环境的搭建,通过M2E 把eclipse 和maven 连起来,使Maven 和Eclipse 一起工作,一般情况下比较新的版本的eclipse 都有自带的M2E.

结语:Maven 的功能还是很强大的,Maven 可以通过调用Ant的插件来调用自定义的task ,但是这个ant的插件必须要绑定到Maven 相对应的一个phase 上面,或者直接把这个task 绑到一个phase 上。其实就是,如果需要写一个自定义个的goal, 就必须把这个goal 放到对应的phase 里面,这样就显得Maven 有点不灵活了,同时这也是约定优于配置的缺点吧!

 

转载于:https://www.cnblogs.com/alldream/p/6854536.html

你可能感兴趣的文章
USB各种模式 解释
查看>>
数据访问-----ADO.NET 小结和练习
查看>>
Linux lsof详解
查看>>
子组件给父组件传数据
查看>>
unix/linux下的共享内存、信号量、队列信息管理
查看>>
Hilbert先生旅馆的故事
查看>>
[家里蹲大学数学杂志]第394期分组求积分因子法
查看>>
[唐诗]送杜少府之任蜀州-王勃
查看>>
华中科技大学数学专业考研试题参考解答
查看>>
Objective-C数组初识
查看>>
appium(10)-iOS predictate
查看>>
程序的优化(PHP)
查看>>
Function.prototype.toString 的使用技巧
查看>>
Zookeeper+websocket实现对分布式服务器的实时监控(附源码下载)
查看>>
Oracle to_char 转换数值
查看>>
selinux-网络服务安全
查看>>
urllib
查看>>
NIOS II 中用结构体指示灯终于正常了
查看>>
CF1009F Dominant Indices - 题解
查看>>
memached实现tomcat的session共享
查看>>