榆林医疗网站建设,wordpress 变成中文,深圳p2p网站建设,开网店的流程和步骤一、什么是Maven#xff1f;
Maven是Apache软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具。
1.1 构建
构建过程包含的主要环节如下#xff1a;
清理#xff1a;删除上一次构建的结果#xff0c;为下一次构建做好准备编译#xff1a;Java源程序…一、什么是Maven
Maven是Apache软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具。
1.1 构建
构建过程包含的主要环节如下
清理删除上一次构建的结果为下一次构建做好准备编译Java源程序编译成*.class字节码文件测试运行提前准备好的测试程序报告针对刚才测试的结果生成一个全面的信息打包Java工程打jar包Web工程打war包安装把一个Maven工程安装到Maven仓库部署将准备好的jar包或war包部署到服务器上运行
1.2 依赖
如果A工程里面用到了B工程的类、接口、配置文件等等的资源就可以说A依赖B。
依赖管理中主要解决的问题
jar包的下载使用Maven之后jar包会从规范的远程仓库下载到本地jar包之间的依赖通过依赖的传递性自动完成jar包之间的冲突通过对依赖的配置进行调整让某些jar包不会被导入
二、Maven的核心概念
2.1 坐标
使用三个向量在Maven的仓库中唯一的定位到一个jar包。
groupId公司或组织的idartifactId一个项目或者项目中的一个模块的idversion版本号。根据自己的需要设定SNAPSHOT表示快照版本正在迭代过程中不稳定的版本RELEASE表示正式版本。
2.2 POM
POMProject Object Model项目对象模型。
POM表示将工程抽象为一个模型再用程序中的对象来描述这个模型。就可以用程序来管理项目了。在开发过程中最基本的做法就是将现实生活中的事物抽象为模型然后封装模型相关的数据作为一个对象就可以在程序中计算与现实事物相关的数据。
POM理念集中体现在Maven工程根目录下pom.xml这个配置文件中。所以pom.xml配置文件就是Maven工程的核心配置文件。
2.3 Maven的常用命令
2.3.1 清除操作
mvn clean删除target目录
2.3.2 编译操作
主程序编译mvn compile测试程序编译mvn test-compile主体程序编译结果存放的目录target/classes测试程序编译结果存放的目录target/test-classes
2.3.3 测试操作
mvn test测试的报告会存放在target/surefire-reports目录下
2.3.4 打包操作
mvn package打包的结果会存放在target目录下
2.3.5 安装操作
mvn install安装的效果就是将本地构建过程中生成的jar包存入Maven本地仓库。这个jar包在Maven仓库中的路径是根据它的坐标生成的。
安装操作还会将pom.xml文件转换为XXX.pom文件一起存入本地仓库。
2.4 依赖的范围
标签的位置dependencies/dependency/scope 标签的可选值compile/test/provided
2.4.1 compile和test对比
main目录空间test目录空间开发过程时间部署到服务器时间compile有效有效有效有效test无效有效有效无效
2.4.2 compile和provided对比
main目录空间test目录空间开发过程时间部署到服务器时间compile有效有效有效有效provided有效有效有效无效
2.4.3 结论
compile在项目实际运行时真正要用到的jar包都是以compile范围进行依赖的。test测试过程中使用的jar包以test范围依赖。provided在开发过程中需要用到的“服务器上的jar包”通常以provided范围依赖。
2.5 依赖的传递性
在A依赖BB依赖C的前提下C是否能够传递到A取决于B依赖C时使用的依赖范围。
B依赖C时使用compile范围可以传递B依赖C时使用test或provided范围不能传递所以需要这样的jar包时就必须在需要的地方明确配置依赖才可以。
2.6 依赖的排除
当A依赖BB依赖C而且C可以传递到A的时候但是A不想要C需要在A里面把C排除掉。这种情况都是为了避免jar包之间的冲突。
配置依赖的排除就是阻止某些jar包的传递。因为这样的jar包传递过来会和其他jar包冲突。
配置方式
dependencygroupIdcom.atguigu.maven/groupIdartifactIdpro01-maven-java/artifactIdversion1.0-SNAPSHOT/versionscopecompile/scope!-- 使用excludes标签配置依赖的排除 --exclusions!-- 在exclude标签中配置一个具体的排除 --exclusion!-- 指定要排除的依赖的坐标不需要写version --groupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions
/dependency2.7 继承
Maven工程之间A工程子工程继承B工程父工程。本质上就是A工程的pom.xml中的配置继承了B工程中pom.xml的配置。
在父工程中统一管理项目中的依赖信息具体来说是管理依赖信息的版本。
2.8 聚合
Maven中的聚合就是使用一个“总工程”将各个“模块工程”汇集起来作为一个整体对应完整的项目。
项目整体模块部分
2.8.1聚合的优点
一键执行Maven命令很多构建命令都可以在“总工程”种一键执行。配置聚合之后各个模块工程在总工程中展示一个列表让项目中的各个模块一目了然。
三、jar包下载失败问题解决方案
3.1 Maven正常下载的做法
jar包在下载过程中jar包的扩展名是XXX.jar.lastUpdatedjar包下载成功后Maven会将lastUpdated扩展名删除让jar包恢复为XXX.jar。
3.2 Maven下载失败的情况
3.2.1 第一种情况
jar包在下载过程中jar包的扩展名是XXX.jar.lastUpdated网络连接丢失无法继续下载jar包没有下载完lastUpdated扩展名不会被删除要求Maven重新下载时Maven看到这个jar包的扩展名是lastUpdatedMaven就不管了。
解决办法 手动删除所有以lastUpdated结尾的文件然后让Maven重新下载。
3.2.2 第二种情况
jar包表面上看起来是下载完的状态结尾并没有“.lastUpdated”扩展名。但是程序运行时找不到这个jar包中的类。
解决办法 找到“有嫌疑”的jar确定其内部是否存在损坏问题。可以使用文件校验工具进行SHA1值对比。若比较结果一致则jar包完好否则jar包损坏。
找到有嫌疑的jar包的小窍门
类所在的package命名往往和jar包坐标的groupId部分类似在IDEA中按两下Shift键使用全类名搜索找到jar包后右键- Show in Explorer如果前面的办法都没法定位只能根据这个类看上去的特征和可能的功能找有可能有关的jar包
学海无涯苦作舟