湖北高端网站建设,wordpress default template,网页设计模板图片html,app和网站哪个有优势目前的技术存在的问题#xff08;引入Maven的重要性#xff09; 一个项目就是一个工程#xff1b; 如果项目非常庞大#xff0c;就不再适合使用package来划分模块#xff1b;最好是每一个模块对应一个工程#xff0c;利于分工协作#xff1b; 借助于Maven可以将一个项目… 目前的技术存在的问题引入Maven的重要性 一个项目就是一个工程 如果项目非常庞大就不再适合使用package来划分模块最好是每一个模块对应一个工程利于分工协作 借助于Maven可以将一个项目拆分成多个工程 项目中的jar包需要导入到WEB-INNF/lib目录下 带来的问题同样的jar重复的出现在不同的项目中一方面浪费存储空间工程也会臃肿 借助Maven可以将jar包仅仅保存在仓库中有需要的工程引入这个文件接口并不需要真的把jar包引入过来 jar包需要别人替我们准备好或者到官网下载 不同技术的官网提供jar包的方式不同 语言问题 有些技术的官网直接通过Maven或者 来提供jar包 非正规方式下载的jar包其中的内容很可能不规范 借助于Maven可以以一种规范的方式下载jar包因为所有知名的框架或者第三方的jar包已经按照统一的规范放在了Maven的仓库中因此jar包也是可靠的 一个jar包依赖的其他jar包需要自己手动导入 如果所有jar包之间的依赖关系都需要程序员了解那么会极大的增加学习成本 Maven会自动的将被依赖的jar包导入进来
“统一的规范”非常重要 Maven的概念 Maven是一款服务于Java平台的自动化构建工具 Make→Ant→Maven→Gradle 构建 概念以java源文件、框架的配置文件、JSP、HTML、CSS、JS、图片等资源为原材料的去生产一个可以运行的项目的过程 生产 部署 搭建 编译Java源文件[User.java]→编译→Class字节码文件[User.class]→交给JVM执行 ; 部署一个BS项目最终运行的并不是动态Web工程本身而是这个动态Web工程编译的结果
运行时环境是一组jar包的引用不是jar包本身复制到工程中 构建中的各个环节 清理将以前编译得到的旧的字节码文件删除为下一次编译做准备 编译将Java源程序编译成Class字节码文件 测试自动测试自动调用junit程序 报告测试程序执行的结果 打包动态Web工程打war包Java工程打jar包 安装Maven特定的概念是将打包得到的文件复制到仓库中的指定位置 部署将动态Web工程生成的war包复制到Servlet容器的指定目录下使其可以运行 自动化构建
安装Maven核心程序 检查JAVA_HOME环境变量 解压Maven核心程序压缩包放在一个非中文、无空格的路径下 配置Maven的环境变量 推荐配置Maven_HOME或M2_HOME推荐 配置PATH 验证运行mvn-v命令查看Maven的版本 Maven的核心概念 约定的目录结构 POM 坐标 依赖 仓库 生命周期/插件/目标 继承 聚合
第一个Maven工程 创建约定的目录结构 根目录工程名 sec源码 pom.xmlMaven工程的核心配置文件 main目录存放主程序 java目录java源文件 resources目录存放框架配置文件或者其他工具的配置文件 test目录存放测试程序 java目录java源文件 resources目录存放框架配置文件或者其他工具的配置文件 为什么用规定的目录结构 Maven要负责项目的自动化构建以编译为例Maven要想自动编译它必须知道Java源文件保存在哪里 自定义的内容使得框架或工具知道必须使用规定的目录表结构或者以配置的方式明确告诉框架工具 约定配置编码
常用Maven命令 注意执行与构建过程相关的Maven命令必须进入pom.xml所在的目录.
与构建过程相关编译、测试、打包、...... 常用命令 mvn clean清理 mvn compile编译主程序 mvn test-compile编译测试程序 mvn test执行测试 mvn package打包 mvn instal安装 mvn site生成站点
联网问题 Maven的核心程序中仅仅定义了抽象的生命周期但是具体的工作必须由特定的插件来完成。而插件本身并不包含在Maven的核心流量中 当我们执行的Maven命令需要用到某些插件时会首先在本地仓库查找 本地仓库的默认位置[系统中当前的用户的家目录]\:m2\respsitory Maven核心程序在本地仓库找不到需要的插件那么会自动连接外网到中央仓库下载 此时无法连接外网则构建失败 修改默认本地仓库的位置可以让Maven在事先准备好的仓库中查找插件 找到Maven解压目录下的\conf\settings.xml 在文件中找到localRepository标签修改为准备好的路径即可
POM 含义Project Object Model项目对象模型 DOMDocument Object Model 文档对象模型 pom.xml对于Maven工程是最核心配置文件与构建相关的一切设置都在这个文件中进行配置重要程度相当于web工程中的 web.xml
坐标 数学中的坐标 在平面中使用X、Y两个量可以定位平面中的任何一个点 在空间中使用X、Y两个量可以定位空间中的任何一个点 Maven中的坐标 使用三个值来定义仓库中的一个Maven工程 groupid公司或者组织域名倒序项目名 groupidcom.shang.maven/groupid artifactid模块名 artifactidhello/artifactid version版本 version1.0.0/version 坐标与仓库中路径的对应关系
路径为groupid/artifactid/version/artifactid-version.jar其中groupid中的.要变成/ 仓库 仓库的分类 本地仓库当前电脑上部署的仓库目录为当前电脑所有的指定Maven工程服务 远程仓库 局域网私服搭建在局域网环境中为局域网范围内的所有Maven工程服务 中央仓库为架设在Internet上为世界上所有的Maven项目工程服务 中央仓库镜像为了分担中央仓库的流量提升用户访问的速度也可以减轻负担 仓库中保存的内容Maven工程 Maven自身所需要的插件 第三方框架或工具的jar包 自己开发的Maven工程
依赖 Maven解析依赖信息时会在本地仓库寻找被依赖的jar包
对于自己开发的Maven工程使用install命令安装后就可以进入仓库。
mvn install 依赖的范围scope compile 对主程序是否有效√ 对测试程序是否有效√ 是否参与打包√ test 对主程序是否有效× 对测试程序是否有效√ 是否参与打包× 典型的例子 provided 对主程序有效 对测试程序有效 不参与打包因此也不参与部署 典型的例子Servlet-api.jar 生命周期 各个构建环节执行的顺序不能打乱顺序必须按照既定的正确顺序来执行 Maven的核心程序中定义了抽象的生命周期生命周期中各个阶段的任务是由插件来完成的 Maven核心程序为了更好的实现自动化构建按照这一特点执行生命周期中的各个阶段不管执行生命周期的哪一个阶段都在此生命周期的第一个阶段开始 插件和目标 生命周期的各个阶段仅仅定义了要执行的任务是什么 各个阶段和插件的目标是对应的 相似的目标由特定的插件来完成 目标可以看做是调用插件功能的命令
在eclipse中使用Maven Maven插件Eclipse内置 Maven插件的设置 installations指定Maven核心程序的位置。不建议使用插件自带的Maven程序而应该使用自己解压的程序 user-settings指定conf/settings.xml的位置从而获取本地仓库的位置 基本操作 创建Maven版的Java工程勾选图中项目