当前位置: 首页 > news >正文

idea maven search for class_Maven是什么?为什么使用

Welcome to Apache Maven​maven.apache.org

Why使用Maven:

  • 一个项目就是一个工程
    如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程
  • 项目中使用jar包,需要“复制”、“粘贴”项目的lib中
    同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行
  • jar包需要的时候每次都要自己准备好或到官网下载
    借助于maven,可以使用统一的下载jar包规范方式
  • jar包版本不一致的风险
    不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。
  • 一个jar包依赖其他的jar包需要自己手动加入项目中
    FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar
    极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。借助于maven,它会自动的将依赖的jar包导入进来。
  • 编译程序,把java编译为class
  • 测试代码是否正确
  • 打包文件(jar、war)
  • 部署项目

Maven是what:

  • maven 是一款服务于java平台的自动化构建工具
  • 构建
    构建定义:把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程。
    编译:java源文件[.java]->编译->Classz字节码文件[.class]
    部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件

48413a8413a33a3e88ea4c6faa94bdf8.png
  • 构建各环节
    • 清理clean:将以前编译得到的旧文件class字节码文件删除
    • 编译compile:将java源程序编译成class字节码文件
    • 测试test:自动测试,自动调用junit程序
    • 报告report:测试程序执行的结果
    • 打包package:动态Web工程打War包,java工程打jar包
    • 安装install:Maven特定的概念—–将打包得到的文件复制到“仓库”中的指定位置
    • 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行
  • maven核心概念
    • POM :一个文件,pom.xml (pom翻译就是项目对象模型)maven把一个项目当做一个模型使用,控制maven构建项目过程,管理jar包依赖
    • 约定的目录结构:maven项目的目录和文件的位置都是规定的
    • 坐标:是一个唯一的字符串,用来表示资源
    • 依赖管理:管理你的项目可以使用jar文件
    • 仓库管理:就是资源存放的位置
    • 生命周期:maven工具构建项目的过程
    • 插件和目标:执行maven构建的时候用的工具是插件
    • 继承
    • 聚合

安装

  • 下载maven

45a74fe68f9efc36fb7e6f4a93d1ada8.png
  • 配置环境变量
  • 验证mvn -v 查看maven版本

IDEA 配置Maven

  • Settings

9c0bc2e8e85d7e1f7eaae07792351f84.png

d214a7da54025534cf0df148559b3435.png

VM Options : -DarchetypeCatalog=internal

  • Other Settings(配置的和Settings 一样)

10831979be92a7e1a3fda3621a88f45a.png

相关文章:

  • tensorflow contrib模块_OpenCV DNN 模块-风格迁移
  • python人脸检测代码_10行代码实现python人脸识别
  • python正则表达式教程_Python正则表达式高级使用方法汇总
  • js修改style样式_jsx组件样式隔离的最佳实践
  • 易语言和python混合编程_C语言可以和Python一起混合编程?两者相加无敌了!
  • python粘性拓展_Python Numpy 数组扩展 repeat和tile
  • 麦肯锡ppt模板 306页黑白_图解钢筋、模板、混凝土细部做法,123页PPT可下载!...
  • selenium判断是否出现弹窗_如何判断宝宝是否有蛔虫?若出现这6种“表现”,可以考虑驱虫了...
  • 怎么查看页面跳转过程_CICD/服务部署完成通知优化-v2.1追加跳转按钮
  • python3实用编程技巧_给Python初学者的一些编程技巧
  • 异常将上下文初始化事件发送到类的侦听器实例_Springboot源码——应用程序上下文分析...
  • python中re.split_python模块之re正则表达式详解
  • python第三方库安装最常用的方式是_Python安装第三方库及常见问题处理方法汇总...
  • cat命令详解_每日命令 | cp
  • 西农 生成树配置_SPI配置方法
  • ES6指北【2】—— 箭头函数
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Java 网络编程(2):UDP 的使用
  • jquery cookie
  • js操作时间(持续更新)
  • oldjun 检测网站的经验
  • SQL 难点解决:记录的引用
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue自定义指令实现v-tap插件
  • 仿天猫超市收藏抛物线动画工具库
  • 高性能JavaScript阅读简记(三)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 简单数学运算程序(不定期更新)
  • 如何设计一个比特币钱包服务
  • 如何优雅地使用 Sublime Text
  • 实现菜单下拉伸展折叠效果demo
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 详解移动APP与web APP的区别
  • 移动端解决方案学习记录
  • Prometheus VS InfluxDB
  • 容器镜像
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $(function(){})与(function($){....})(jQuery)的区别
  • (1)bark-ml
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (175)FPGA门控时钟技术
  • (9)目标检测_SSD的原理
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (第一天)包装对象、作用域、创建对象
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (推荐)叮当——中文语音对话机器人
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .form文件_SSM框架文件上传篇
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调