maven 项目管理和构建工具
mvn
- 1. maven 是什么
- 2. maven能解决什么问题
- 3. maven 需要配置和下载
- 4. 使用eclipse创建maven项目
- 5. xml依赖配置 作用范围
- 6. maven的常用命令
1. maven 是什么
Maven 在美国是一个口语化的词语,代表专家、内行的意思,
Maven是一个项目管理工具,
它包含了一个项目对象模型(POM:Project Model), 一组标准集合,
一个项目生命周期(jar包引入、编码、编译、单元测试、打包war/jar),
解决大部分的jar包冲突(类的冲突、多个jar包中存在相同的类(相同的类全路径)),
报错信息(类找不到),依赖管理系统和一键构建用来运行定义在生命周期中插件目标逻辑。
作用:jar包引入、编码、编译、单元测试、打包war/jar
2. maven能解决什么问题
项目开发不仅仅是写写代码而已,
期间会伴随着各种必不可少的事情要做,比如:
- 我们需要引用各种 jar 包,尤其是比较大的工程,
引用的 jar 包往往有几十个乃至上百个,
每用到一种 jar 包,都需要手动引入工程目录,
而且经常遇到各种让人抓狂的 jar 包冲突,版本冲突。 - 我们辛辛苦苦写好了 Java 文件,
可是只懂 0 和 1 的白痴电脑却完全读不懂,
需要将它编译成二 进制字节码。
好歹现在这项工作可以由各种集成开发工具帮我们完成,
Eclipse、IDEA 等都可以将代 码即时编译。
当然,如果你嫌生命漫长,何不铺张,
也可以用记事本来敲代码,然后用 javac 命令一 个个地去编译。 - 世界上没有不存在 bug 的代码,
计算机喜欢 bug 就和人们总是喜欢美女帅哥一样。
为了追求美为了减少 bug,因此写完了代码,
我们还要写一些单元测试,
然后一个个的运行来检验代码质量。 - 再优雅的代码也是要出来卖的。
我们后面还需要把代码与各种配置文件、资源整合到一起,
定型打包,如果是 web 项目,还需要将之发布到服务器,供人蹂躏使用。
试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,
能帮你构建工程,管理 jar 包,编译代码,
还能帮你自动运行单元测试,打包,生成报表,
甚至能帮你部署项目,生成Web站点,你会心动吗?
Maven 就可以解决上面所提到的这些问题
3. maven 需要配置和下载
http://maven.apache.org/download.cgi
- 配置maven的环境变量,jdk的环境变量必须配置好java8 或者 java11以上
- 一个是中央仓库的位置改为阿里云的
- 第二个是指定本地仓库
https://www.cnblogs.com/huangting/p/11079087.html
https://blog.csdn.net/huo920/article/details/82082403
4. 使用eclipse创建maven项目
截图为证
选好骨架webapp
导入servlet包
项目结构的完善
上面的结构还不是完善的,需要有测试包和写java代码的包
完整的项目结构
5. xml依赖配置 作用范围
比如下面的scope,是provided
<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope>
</dependency>
- compile
默认的scope,表示 dependency 都可以在生命周期中使用
而且,这些dependencies 会传递到依赖的项目中。
- provided
跟compile相似,但是表明了dependency 由JDK或者容器提供,
例如Servlet API和一些Java EE APIs。
这个scope 只能作用在编译和测试时,同时没有传递性
使用这个时,不会将包打入本项目中,只是依赖过来
使用默认或其他时,会将依赖的项目打成jar包,放入本项目的Lib里
- runtime
表示dependency不作用在编译时,但会作用在运行和测试时
- test
表示dependency作用在测试时,不作用在运行时
6. maven的常用命令
- clean:清理
将项目根目录下target目录清理掉
- compile:编译
compile 是 maven 工程的编译命令,
作用是将 src/main/java 下的文件编译为 class 文件
输出到 target 目录下
- test:单元测试
单元测试类名有要求:XxxTest.java(命令只认Test结尾的)
将项目根目录下,src/test/java目录下的单元测试类都会执行
- package:打包
web project —war包
java project —jar包
将项目打包,打包到项目更目录下target目录
- install:安装
解决本地多个项目共用一个jar包,打包到本地仓库。
install 是 maven 工程的安装命令,
执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
找到项目的根路径,命令行。
mvn install
问题:
- package和install的区别
1. 都会经历过 清理、编译、测试、报告、打包2. package会打包生成target文件夹,生成jar或者war包3. install会将本地仓库放一份
maven 项目管理和构建工具相关推荐
- 动力节点笔记-Maven 自动化的构建工具
目录 Maven 自动化的构建工具 第一章 Maven简介 1.1 软件开发中的阶段 1.2 Maven能做什么 1.3 没有使用maven怎么管理依赖 1.4 什么是maven 1.5 maven中 ...
- Python 项目管理与构建,这四款工具足够了!
作者:隔叶黄莺 来源:https://yanbin.blog/python-dependency-management-build-tools Python 历时这么久以来至今还未有一个事实上标准的项 ...
- 【Maven从入门到精通】 01-自动化构建工具:Maven
笔记来源:Maven零基础入门教程(一套轻松搞定maven工具) 文章目录 自动化构建工具:Maven 1.Maven 到底是啥? 2.什么是构建? 3.构建过程中的各个环节 4.自动化构建 5.安装 ...
- Maven学习总结(56)—— Maven、Gradle 、 Ant 哪一个构建工具最适合你?
前言 根据相关报告,大多数 Java 开发人员使用 Maven 作为他们的主要构建工具,在 67% 的受访者中.排名第二和第三的分别是 20% 的 Gradle 和 11% 的 Ant.这三个构建工具 ...
- Maven项目管理工具
Maven项目管理工具 1.Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven 1.1.2 Maven能解决什么问题 1.1.3 Maven的优势举例 1.2 Maven的两个作用 ...
- 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具
[简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...
- Maven与Gradle项目构建工具
目录 一.Maven介绍 一.maven介绍 二.分模块开发 继承!!!parent!!! 聚合!!! module!!! Dependencies和dependencyManagement Buil ...
- 即将取代Maven和Gradle的新一代更强更快的构建工具(至尊典藏版)
目录 前言 1.介绍 2.安装 3.使用 3.1. 从GitHub下载压缩包 3.2. 解压并配置环境变量 3.3.测试 4.总结 前言 大家好,我是程序缘--幻羽,我又来了!! Maven和Grad ...
- SSM框架自学(四)——Maven项目管理工具快速入门
前言:最初Java SSM搭建Web项目时,采用的是比较繁琐的手动导入jar包的形式,我们得去对应官网上到处找各种jar包,然后下载好导入自己项目的lib目录中.下面就是一个最简单的SSM项目所需的j ...
最新文章
- 如何设置listview每个item高度
- Redis集群:一致性哈希
- Python列表中字符串转数字的方法
- leetcode 994. Rotting Oranges | 994. 腐烂的橘子(BFS)
- science量子计算机,第一快讯|《Science》量子计算机被证明超越了经典计算机
- android zip压缩
- IBM 语音识别输入系统
- 68.TextView设置中划线、下划线
- golang gin解决跨域:编写一个全局中间件
- ORACLE decode
- 冰点还原精灵密钥可以用多少台电脑
- c语言全局变量(c语言全局变量怎么定义)
- SEO和SEM的区别是什么?
- 揭露培训机构以招聘名义变相招生的欺诈套路!莫被骗!附上企业黑名单!
- Ribbon停止维护
- 小项目一:使用fping统计网络中主机的网络连通情况
- labview与android,LabVIEW与Android手机的无线视频实时传输
- 大道至简——软件工程实践者的思想知识导图
- UCB——上界置信算法
- 1896-2021历届奥运会奖牌榜动态排序(Matplotlib图表动画)
热门文章
- 前端学习(1179):vue概述
- JAVA翻译官_Java开发笔记(三)Java帝国的特种官吏
- vue中使用cookies和crypto-js实现记住密码和加密
- CSS3之Transform
- TCP服务器epoll的多种实现
- python猜数字游戏实例_Python案例:猜数字小游戏,由浅入深!
- 智能机器人及其应用ppt课件_机器人视觉技术在建筑智能化生产中的应用
- html设计网页技巧,网页设计技巧:网页表格设计技巧总结
- UI自动化之读取浏览器配置
- 【市场调研与分析】Intel发力移动安全领域——By Me at 20140613