MAVEN架构项目管理工具(下)

1、maven工程约定目录结构

        每一个maven在磁盘中都是一个文件夹(即项目,以hello项目为例)

Hello/
    ---/src
	------/main          #放置主程序Java代码和配置文件
	-----------/java      #程序的包和包中的文件
	-----------/resource      #java程序中要使用的配置文件
	
	------/test            #放测试程序代码和文件的,可以没有
	-----------/java      #测试程序的包和包中的文件
	-----------/resource      #测试java程序中要使用的配置文件
	
    ---/pom.xml      #maven的核心文件(maven项目必须有)

2、pom.xml

        不管是自己的还是第三方的,都需要坐标来标识,不同的是,第三方的需要引入第三方依赖,即dependcy

        就像 Make 的 MakeFile、Ant 的 build.xml 一样,Maven 项目的核心是 pom.xml。POM( Project Object Model,项目对象模型 ) 定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等

        概念:

                在 Maven 中坐标是构件的唯一标识,Maven 坐标的元素包括 groupIdartifactIdversion、packaging、classifier。上述5个元素中,groupId、artifactId、version 是必须定义的,packaging 是可选的 ( 默认为 jar ,web项目中需要改为war)。

        意义:

                Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范

                拥有了统一规范,就可以把查找工作交给机器

        含义:

                groupId:组织标识,一般为:公司网址的反写+项目名(com.baidu)

                artifactId:项目名称,一般为:项目名-模块名

                version:版本号 形式为0.0.1-SNAPSHOT:

                        第一个 0 表示大版本号,第二个 0 表示分支版本号,第三个 0 表示小版本号

                        SNAPSHOT -- 快照版本,ALPHA -- 内侧版本,BETA -- 公测版本,RELEASE --                         稳定版本,GA -- 正式发布

                packaging:打包的方式,如:pom, jar, maven-plugin, ejb, war,....

                clissifier:用来帮助定义构件输出的一些附属构件

3、依赖

        含义:

                在编写Java代码时,我们总是需要一些库,比如我要使用mysql驱动,在没有maven时,我们需要去网上下载对应的jar包,然后移动到对应项目的lib中,而我们使用maven后,Maven将下载它们并将它们放在您的本地Maven存储库中。

                我们可以在POM文件中的dependencies元素内指定依赖关系。

        依赖范围:

                Maven项目在开发工程中有三套classpath

                                主代码:main下面的都是主代码,在编译的时候的依赖

                                测试代码:test下是测试代码,编译的时候的依赖

                                运行时:main代码在运行的时候对包的依赖

                依赖范围的使用,通过在引用第三方依赖时的<scope></scope>标签进行设置共 6 种 scope,包括:compileprovidedruntimetest、system、import,例如junit单元测试,只在测试中使用,则选择test即可,默认为compile

                Compile:编译依赖范围。默认使用此依赖范围,其下的maven依赖,对于编译,测试,运行classpath都有效

                Test:测试依赖范围。只对测试classpath有效,编译主代码或运行项目时无法使用此依赖。典型例子如junit

                Provided:已提供依赖范围。其对于编译与测试classpath有效,运行时无效。如在web开发时,只有在编译和测试时才用到servlet-api,将其设置为此范围,在运行时servlet-api由web容器提供,无须依赖。并且在打war包时,此范围的依赖不会打在WEB-INF/lib下

                Runtime:运行时依赖范围。与provided相对,运行时classpath有效。典型例子如jdbc       

        依赖传递和可选依赖:

                第一直接依赖: HelloFriend项目依赖Hello项目

                第二直接依赖: MakeFriend项目依赖HelloFriend项目

                依赖范围对传递依赖的影响

                               传递依赖是会受到依赖范围的影响的,具体来看结果如下:

                                依赖阻断:

                                        使用<optional>true</optional>来完成依赖阻断

                                 可选依赖 :

                                        如果我们需要在依赖中明确的排除掉某一依赖,则可以使用exclusion属性,排除掉引用的依 赖   

            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/698347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

敏捷风险管理:识别和应对项目威胁与机会

项目风险是一种不确定的事件或条件&#xff0c;一旦发生&#xff0c;就会对项目目标造成积极或消极的影响。 现实中&#xff0c;风险可能是微妙而复杂的&#xff0c;缺少经验的人很难对其进行识别和管理。 敏捷风险管理是敏捷项目治理的基础。在敏捷环境下&#xff0c;敏捷风险…

Spring Boot 项目启动时在 prepareContext 阶段做了哪些事?

概览 如果你对Spring Boot 启动流程还不甚了解&#xff0c;可阅读《Spring Boot 启动流程详解》这篇文章。如果你已了解&#xff0c;那就让我们直接看看prepareContext() 源码。 private void prepareContext(ConfigurableApplicationContext context, ConfigurableEnvironme…

Knife4j 全局鉴权需求 (在OpenAPI3规范中添加Authorization鉴权请求Header)

文章目录 引言I Knife4j 全局鉴权需求1.1 利用springdoc项目提供的customizer接口解决1.2 常见问题II 添加自定义Header参数(签名字段)see also引言 OpenAPI3规范对于Security的定义说明,主要分为两部分: 在compoents组件下定义Security的鉴权方案类型在接口级别的Operati…

工业机器人远程运维,增强智慧工厂运营管理

1、需求背景 随着工业自动化技术的普及和工业机器人应用的增加&#xff0c;制造业对于生产线稳定性和效率的要求不断提高。然而&#xff0c;传统的现场监控方式存在着地理位置限制、实时监控难度大以及诊断能力有限等问题&#xff0c;迫切需要一种更具灵活性和效率的监控方式。…

这可能是最清晰易懂的 G1 GC 资料

滑动验证页面 概述 G1 (Garbage-First) 于JDK 6u14版本发布&#xff0c;JDK 7u4版本发行时被正式推出&#xff0c;在JDK9时已经成了默认的垃圾回收器&#xff0c;算是CMS回收器的替代 方案&#xff08;CMS在JDK9以后已经废弃&#xff09; G1是一款分代的 (generational)&a…

AI漫画赛道,10分钟快速赚钱秘诀!

AI百宝箱-Chatgpt4.0、Midjourney绘画、人工智能绘画、AI换脸、AI图片放大、AI图片分析、AI图片融合https://h5.cxyhub.com/?invitationhmeEo7 先使用ChatGPT写小说 ComicAI 漫画小说生成网站 1. 创建小说漫画 2. 故事模板 3. 生成角色形…

基于spring boot+MySQL 小区物业管理系统-计算机毕设 附源码37236

spring boot 小区物业管理系统 摘 要 在网络信息的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;小区物业只能以客户为导向&#xff0c;以产品的持续创新作为小区物…

音视频集式分布式拉流管理

一直以来&#xff0c;由于srs zlm等开源软件采用传统直播协议&#xff0c;即使后面实现了webrtc转发&#xff0c;由于信令交互较弱&#xff0c;使得传统的安防监控方案需要在公网云平台上部署大型流媒体服务器&#xff0c;而且节点资源不能统一管理调度&#xff0c;缺乏灵活性和…

问题:小石明知道上课玩手机会影响学习,但就是管不住自己。这说明小石缺乏()教育。 #职场发展#职场发展#经验分享

问题&#xff1a;小石明知道上课玩手机会影响学习&#xff0c;但就是管不住自己。这说明小石缺乏&#xff08;&#xff09;教育。 A.道德情感 B.道德意志 C.道德行为 D.道德认识 参考答案如图所示

B-6 Web应用程序文件包含-Server2233(环境+解析)

B-6 Web应用程序文件包含 任务环境说明:服务器场景名称:Server2233(关闭链接) 通过扫

C++ | Leetcode C++题解之第143题重排链表

题目&#xff1a; 题解&#xff1a; class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNode(head);ListNode* l1 head;ListNode* l2 mid->next;mid->next nullptr;l2 reverseList(l2);mergeList(l1, l…

Apple WWDC24的18条总结:从GPT-4o开始集成ChatGPT

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之…

通过 CartPole 游戏详细说明 PPO 优化过程

CartPole 介绍 在一个光滑的轨道上有个推车&#xff0c;杆子垂直微置在推车上&#xff0c;随时有倒的风险。系统每次对推车施加向左或者向右的力&#xff0c;但我们的目标是让杆子保持直立。杆子保持直立的每个时间单位都会获得 1 的奖励。但是当杆子与垂直方向成 15 度以上的…

以太网基础知识(二)——PAM4NRZ

概念&#xff1a;PAM4&#xff08;Pulse Amplitude Modulation 4&#xff09;是用于将数字数据转换成模拟信号。在400G以太网中PAM4被用于将数字数据转换成光信号以便在光纤中传输。PAM4技术通过改变光信号的振幅和相位来表示4个不同的数字状态&#xff0c;每个状态代表2个比特…

46-4 等级保护 - 网络安全等级保护概述

一、网络安全等级保护概述 原文:没有网络安全就没有国家安全 二、网络安全法 - 安全立法 中华人民共和国主席令 第五十三号 《中华人民共和国网络安全法》已于2016年11月7日由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议通过,并自2017年6月1日起正式…

问题:高炉风口前的燃烧带的边界是以()含量降为1%为界限标志的。 #媒体#媒体#笔记

问题&#xff1a;高炉风口前的燃烧带的边界是以()含量降为1%为界限标志的。 参考答案如图所示

RESTful API最佳实践:Python构建指南

目录 一、引言 二、RESTful API设计原则 三、Python构建RESTful API的技术栈 四、Flask构建RESTful API实践 安装Flask 定义路由和资源 处理HTTP方法 错误处理 数据验证和序列化 使用Flask扩展 五、最佳实践案例 七、结论 一、引言 在当今的软件开发领域&#…

C51学习归纳10 --- 单总线通信协议、DS18B20

通信协议是最重要的&#xff0c;我们之前学习了I2C通信协议&#xff0c;这一节我们学习一下新的通信协议&#xff0c;单总线通信。 一、开发板原理图 可以看出直接由P3_7口控制&#xff0c;但是遵循单总线协议。 单总线的电路要求 现在介绍单总线的通信协议细节&#xff1a; 1…

免费插件集-illustrator插件-Ai插件-文本属性批处理

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;进行文本属性批处理。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

【递归、搜索与回溯】综合练习 {回溯恢复现场;剪枝优化}

一、经验总结 在递归算法中某些变量需要在回溯到上一层递归后恢复现场&#xff08;如递归路径&#xff09;&#xff0c;恢复现场的方法有&#xff1a; 全局变量手动恢复&#xff1a;如果该变量的类型为自定义类型&#xff08;vector, string等&#xff09;则推荐定义为全局变…