论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
物联网
›
物联网
›
【Maven】Maven的classpath
【Maven】Maven的classpath
涛声依旧在
金牌会员
|
前天 07:18
|
显示全部楼层
|
阅读模式
楼主
主题
742
|
帖子
742
|
积分
2226
1、概念
Maven 的 classpath 是指在构建和运行项目时,Java 编译器和运行时环境用来查找类文件和其他资源的路径聚集。Maven 通过其依靠管理和构建生命周期来自动管理 classpath,确保所有须要的库和资源都被正确包含。
2、Maven Classpath 的分类
Maven 有三套 classpath,编译 classpath、测试 classpath 和运行 classpath,实质就是差别作用域的依靠在编译、测试或运行时是否会发挥作用。
编译 classpath:能否让项目顺利通过编译不报错
测试 classpath:在测试时依靠能否被引用
运行 classpath:依靠是否会被打包进项目
3、Maven Classpath 的组成
Maven 的 classpath 主要由以下几个部分组成:
(1) 项目自身的源代码:
src/main/java:包含应用步伐的主要Java源代码。
src/test/java:包含测试代码。
(2) 项目自身的资源文件:
src/main/resources:包含应用步伐的主要资源文件(如设置文件、静态资源等)。
src/test/resources:包含测试所需的资源文件。
(3) 依靠项:
Maven 会根据 pom.xml 中定义的依靠关系,从当地仓库、中央仓库或自定义远程仓库中下载并添加到 classpath 中。
(4) 插件提供的类和资源:
某些 Maven 插件可能会提供额外的类或资源,这些也会被添加到 classpath 中。
(5) 编译输出目录:
target/classes:存放编译后的主代码和资源文件。
target/test-classes:存放编译后的测试代码和资源文件。
4、Maven 如何管理 Classpath
Maven 使用一种称为“依靠剖析”的机制来确定哪些依靠应该被包含在 classpath 中,而且根据差别的构建阶段(如编译、测试、打包等)动态调解 classpath 内容。
比方,在编译时,Maven 会到 src/main/java 目录下探求 Java 源码,并探求在 pom 文件中 scope 为 compile 的依靠项,然后执行编译。
思索:Maven 生命周期的差别的阶段(phase)分别使用哪种 classpath?
Maven 的构建生命周期由一系列的阶段(phases)组成,每个阶段对应着特定的使命。Maven 根据当前所处的构建阶段动态调解 classpath,以确保每个阶段都能访问到所需的类和资源。以下是 Maven 构建生命周期中一些关键阶段及其对应的 classpath 类型:
(1) validate
Classpath:根本不必要额外的 classpath,主要用于验证项目设置是否正确。
说明:这个阶段通常不涉及编译或运行代码,所以不会使用特定的 classpath。
(2) compile
Classpath:
包罗 src/main/java 和 src/main/resources。
包罗所有标记为 compile 范围的依靠项。
说明:在这个阶段,Maven 编译项目标主源代码,并将编译后的类文件输出到 target/classes 目录下。
(3) test-compile
Classpath:
包罗 src/test/java 和 src/test/resources。
包罗所有标记为 compile 和 test 范围的依靠项。
说明:编译测试代码,并将编译后的类文件输出到 target/test-classes 目录下。
(4) test
Classpath:
包罗 target/classes 和 target/test-classes。
包罗所有标记为 compile 和 test 范围的依靠项。
说明:执行单位测试,确保代码质量。测试框架(如 JUnit 或 TestNG)会根据此 classpath 加载须要的类和资源。
(5) package
Classpath:
主要基于 target/classes 中的内容。
包罗所有标记为 compile 和 runtime 范围的依靠项(具体取决于打包类型)。
说明:创建可分发的包(如 JAR、WAR),并将其放置在 target 目录中。对于某些打包类型(如 WAR),还会包罗 WEB-INF/lib 下的依靠。
(6) integration-test
Classpath:
包罗 target/classes 和 target/test-classes。
包罗所有标记为 compile、test 和 runtime 范围的依靠项。
说明:部署打包好的应用步伐到集成测试环境中,并执行集成测试。这通常涉及到更复杂的环境设置,比方启动应用服务器等。
(7) verify
Classpath:
与 test 阶段类似,但可能包含更多运行时依靠。
说明:运行任何查抄工具来验证集成测试的结果,确保满意发布标准。
(8) install
Classpath:
主要用于将打包好的工件安装到当地仓库。
说明:这个阶段通常不必要特殊的 classpath,因为它主要是为了更新当地仓库中的元数据
(9) deploy
Classpath:
用于将打包好的工件部署到远程仓库。
说明:类似于 install,但它将工件上传到一个或多个远程仓库,以便其他项目可以引用它们。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
涛声依旧在
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL基本SQL语句之高级操作
maven配置步骤及问题
一文读懂K-Means原理与Python实现 ...
IOS OpenGL ES GPUImage 图像黑白色调 ...
Java 2023年接地气的中高级面试题一( ...
Flink-基于 DataStream API 实现欺诈检 ...
史上最全MongoDB之部署篇
大数据ETL开发之图解Kettle工具(入门 ...
为什么说 Go 语言字符串是不可变的? ...
阿里云申请免费证书、域名解析以及ngin ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表