30分钟Maven入门到精通
Maven是近年来最流行的项目构建与管理工具。不仅简化了我们开发过程中对jar包依赖的导入,还对项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等所有构建过程进行了抽象和统一,方便了我们对项目的管理。maven依赖是我们最为熟知的特性,单个项目的依赖管理并不难,但是要管理几个甚至几十个模块时,那这个依赖有应该怎么管理呢?
一:maven的常用命令
mvn validate:验证工程是否正确,所有需要的资源是否可用
mvn compile:编译源代码
mvn test-compile:编译测试代码
mvn test:运行测试
mvn package:打包
mvn clean:清理项目
mvn install:安装到本地仓库
mvn deploy:上传到私服
mvn dependency:tree:显示maven依赖树
mvn dependency:list:显示maven依赖列表
二:依赖的传递顺序
1. 近者优先
比如A项目依赖了C项目的1.1版本,同时又依赖了B项目,但是B项目里面有依赖了C项目的1.0版本。此时A里面生效的是C1.1版本。
A > B > C-1.0.jar
A > C-1.1.jar
2. 第一申明优先
B项目依赖D的1.0版本,C项目依赖D的1.1版本。A项目同时依赖B和C,此时A项目里面生效的是D1.0,因为A先引用的是B项目。
A > B > D-1.0.jar
A > C > D-1.1.jar
三:依赖的作用范围
*complie:这是默认范围,编译依赖对项目所有的classpath都可用。而且编译的依赖会传递到依赖的项目。
*provided:只有在测试和编译时有效,但在打包时会做exclude操作。jdk或者运行的容器包含这个依赖,我们就可以将作用域设置为provided。(例如开发web应用编译时需要servlet-api.jar,但是运行容器已有了这个依赖,我们就能修改它的作用域范围了)
*runtime:测试和运行时有效,编译时无效。(比如项目编译时不需要jdbc相关的jar包,但是运行时会需要相关的驱动包)
*test:只在编译测试代码 和 运行测试代码时有效。
*system:和provided类似,但是system作用域的依赖必须指定一个本地路径。因为它不会去maven仓库去找,而是直接从本地系统中读取的。
*import:它只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置。maven和java一样是单继承的,假如我不想继承、或者是继承多个又该怎么处理呢?比如我现在有一个叫base-parent1父模块,里面有junit、log4j两个依赖。但是我另一个工程可能也需要这两个依赖 但是有不想重复引入又该怎么办呢?
先看parent1的代码:
此时,我的另一个项目只需要import这个项目,就能把 parent1 的依赖引用过来了。
*exclusion:依赖排除,比如jedis包里面还包含commons-pool2包,但是我不想引用这个jar包,就可以用<exclusion>标签把它排出去。
*optional:依赖可选,例如:A依赖B,B依赖C,B将C标记为可选,这样A就不会依赖到C了。
四:Maven的生命周期
maven的生命周期分为三个阶段,他们分别是clean、default、site。
* clean生命周期的目的是清理项目
pre-clean:执行一些清理前需要完成的工作
clean:清理上一次构建生成的文件
post-clean:执行一些清理后需要完成的工作
* default生命周期的目的是构建项目
validate:验证工程是否正确
compile:编译项目的源代码
test:使用单元测试框架运行项目,测试代码不会被打包或者部署
package:把编译好的代码,打包成可发布的格式,如JAR、WAR。
verify:运行所有检查,验证包是否有效
install:将包安装到maven本地仓库,供本地其它maven项目使用
deploy:将最终的包复制到远处仓库,供其它开发人员和maven项目使用
* site生命周期的目的是建立项目站点
pre-site:执行一些在生成项目站点之前需要完成的工作
site:生成项目站点文档
post-site:执行一些在生成项目站点后需要完成的工作
site-deploy:将生成的项目站点发布到服务器上
五:Maven私服搭建
1. 首先安装好jdk和maven,并配置环境变量
2. 下载nexus https://www.sonatype.com/download-oss-sonatype
3. 解压tar -zxvf nexus-2.14.13-01-bundle.tar.gz 会得到nexus-2.14.13-01 sonatype-work两个文件夹
4. 进入bin目录,可使用两个命令启动①./nexus start ②./nexus run(初次启动建议使用此命令,会显示启动日志)
5. 日志文件所在路径 /sonatype-work/nexus/log/nexus.log
6. 需要设置环境变量来解决上面问题vim /etc/profile加入export RUN_AS_USER=root,然后source /etc/profile使环境变量立即生效。
7. 这时候./nexus stop停止后再启动就好了,如果问题还没解决需要 vim nexus-2.14.13-01/bin/nexus添加下面配置,然后重启就好了
8. 启动成功之后 localhost:8081/nexus就能访问了
六:nexus私服实战
1. 仓库类型:点击左边的仓库,则会展示出所有的仓库名称和类型。
* hosted:本地仓库,公司自己的工具类可以打成jar包,发布到这里。
* proxy:代理仓库,用来代理远程的公共仓库 如:maven中央仓库。用户无法上传jar包只能下载。
* group:仓库组,用来合并hosted/proxy仓库,如果需要同时依赖好几个jar包时,直接引用group就好了,不用一个个引用。
* virtual:虚拟仓库基本废弃不用了。
2. 新建仓库
3. 上传依赖 mvn clean 先清理,mvn package打完包,mvn deploy 就能上传到服务器了。
* 最后复制jar包的地址,就能在项目中使用这个jar包的方法了~
30分钟Maven入门到精通的更多相关文章
- LeakCanary,30分钟从入门到精通
简述 在性能优化中,内存是一个不得不聊的话题:然而内存泄漏,显示已经成为内存优化的一个重量级的方向.当前流行的内存泄漏分析工具中,不得不提的就是LeakCanary框架:这是一个集成方便, 使用便捷, ...
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...
- AngularJS 30分钟快速入门【译】
引用自:http://www.revillweb.com/tutorials/angularjs-in-30-minutes-angularjs-tutorial/,翻译如下: 简介 我三年前开始使用 ...
- Python 30分钟快速入门指南
学习地址 中文版:Python 30分钟入门指南 英文版:Learn X in Y minutes 学习时间 2019/03/10 19:00 - 19:32,多用了2分钟.
- WebSocket协议:5分钟从入门到精通
一.内容概览 WebSocket的出现,使得浏览器具备了实时双向通信的能力.本文由浅入深,介绍了WebSocket如何建立连接.交换数据的细节,以及数据帧的格式.此外,还简要介绍了针对WebSocke ...
- 30 分钟快速入门 Docker 教程
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 一.欢迎来到 Docker 世界 1. ...
- vue.js-vue入门教程教你如何html中使用vue(30分钟快速入门)
前后端分离.微服务框架是当下比较流行的词汇,而vue就是前端框架的佼佼者.下面重点介绍一下vue的用法: vue起步:1.引包 2.启动new Vue({el:目的地,template:模板内容 ...
- Scala入门到精通
原文出自于: http://my.csdn.net/lovehuangjiaju 感谢! 也感谢,http://m.blog.csdn.net/article/details?id=52233484 ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
随机推荐
- Housewife Wind
Housewife Wind 参考博客:POJ2763 Housewife Wind(树剖+线段树) 差不多是直接套线段树+树剖的板子,但是也有一些需要注意的地方 建树: void build() { ...
- linux crontab 定时任务,任务命令单独linux执行正常,放定时任务就不执行了,解决办法 (原)
这是我crontab里面的内容 */30 * * * * ./usr/bin/wget -q -O sync_log.txt http://fly.dllm.cn/index.php/Home/In ...
- R_Studio(教师经济信息)逻辑回归分析的方法和技巧
使用R语言对"教师经济信息"进行逻辑回归分析 (1)按3:1的比例采用简单随机抽样方法,创建训练集和测试集 (2)用训练集创建逻辑回归模型 (3)用测试集预测贷款结果,并用tabl ...
- 大哥带的XSS练习
0x01反射型 <script>alert("zhong")</script> 可以看见什么都没有过滤 0x02存储型XSS http://www.xss_ ...
- python学习之路(10)--难点
递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以 ...
- Spring boot之配置server信息
知识点: 1.修改端口号 2.修改context-path 3.其它配置说明 配置端口号: Spring boot 默认端口是8080, 如果想要进行更改的话, 只需要修改applicatoin.pr ...
- 剑指offer:把一个支付算转化为整数
1:首先,根据课本上的程序,是这样的: #include "stdafx.h" #include "iostream" using namespace std; ...
- 三、smarty--变量调节器(修改器)
变量调节器(修改器) 作用: 1. 从PHP中分配个模板的变量 2. 需要模板中对变量在输出前进行处理 3. 处理方式就是使用“函数” 4. 在smarty3中可以直接调用到PHP的函数 5. ...
- [论文理解] Receptive Field Block Net for Accurate and Fast Object Detection
Receptive Field Block Net for Accurate and Fast Object Detection 简介 本文在SSD基础上提出了RFB Module,利用神经科学的先验 ...
- Tomcat-8.5.39性能监控及调优
一.下载地址 https://tomcat.apache.org/download-80.cgi 二.安装步骤 将安装包 apache-tomcat-8.5.39.tar.gz 上传至服务器 /usr ...