千家信息网

Maven Scope的概念及分类说明

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章主要讲解了"Maven Scope的概念及分类说明",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Maven Scope的概念及分类说明"吧!S
千家信息网最后更新 2025年01月25日Maven Scope的概念及分类说明

这篇文章主要讲解了"Maven Scope的概念及分类说明",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Maven Scope的概念及分类说明"吧!

Scope


scope定义了类包在项目的使用阶段。项目阶段包括: 编译、运行、测试和发布

分类说明

  1. compile: 默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去。

  2. test: 该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit。

  3. runtime: 依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。 此类的驱动都是为runtime的类库。

  4. provided :该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。

  5. system :使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。

  6. import :这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。

举例说runtime

首先要知道Maven中引入的jar包依赖都是已经编译好的可以直接使用的*.class文件!然后比如 runtime 类型的 java的jdbc链接,官方已经提供好连接工具包了。我们在调用的时候一定是通过反射来 加载 好驱动的从而链接数据库。

    mysql    mysql-connector-java    5.1.26    runtime

依赖JDBC的demo如下:

package com.sowhat.Demo01;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;//提供获取连接的方法public class JDBCUtils {    private static Connection conn=null;    static{        try {            Class.forName("com.mysql.jdbc.Driver");            String url="jdbc:mysql://localhost:3306/goods?characterEncoding=utf-8";            String username="root";            String password="123456";            conn=DriverManager.getConnection(url,username,password);        } catch (Exception e) {            // TODO Auto-generated catch block            throw new RuntimeException(e+"数据库连接失败");        }             }    //获取数据库连接对象    public static Connection getConnection(){        return conn;    }    //关闭数据库的方法    ....}

systemPath :

当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径,例如:

    org.hamcrest    hamcrest-core    1.5    system    ${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar

dependency中的type


引入某一个依赖时,必须指定type,这是因为用于匹配dependency引用和dependencyManagement部分的最小信息集实际上是{groupId,artifactId,type,classifier}。在很多情况下,这些依赖关系将引用没有classifier的jar依赖。这允许我们将标识设置为{groupId,artifactId},因为type的默认值是jar,并且默认classifier为null。
type的值一般有jar、war、pom等,声明引入的依赖的类型

dependency中的classifier


Classifier可能是最容易被忽略的Maven特性,但它确实非常重要,我们也需要它来帮助规划坐标。设想这样一个情况,有一个jar项目,就说是 dog-cli-1.0.jar 吧,运行它用户就能在命令行上画一只小狗出来。现在用户的要求是希望你能提供一个zip包,里面不仅包含这个可运行的jar,还得包含源代码和文档,换句话说,这是比较正式的分发包。这个文件名应该是怎样的呢?dog-cli-1.0.zip?不够清楚,仅仅从扩展名很难分辨什么是Maven默认生成的构件,什么是额外配置生成分发包。如果能是dog-cli-1.0-dist.zip就最好了。这里的dist就是classifier,默认Maven只生成一个构件,我们称之为主构件,那当我们希望Maven生成其他附属构件的时候,就能用上classifier。常见的classifier还有如dog-cli-1.0-sources.jar表示源码包,dog-cli-1.0-javadoc.jar表示JavaDoc包等等。

classifier它表示在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar,例如:

jdk7jdk8

感谢各位的阅读,以上就是"Maven Scope的概念及分类说明"的内容了,经过本文的学习后,相信大家对Maven Scope的概念及分类说明这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

运行 编译 分类 数据 测试 数据库 构件 阶段 项目 生成 内容 情况 文件 学习 驱动 不同 相同 元素 周期 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哪种数据库适合单机备份 想学习网络技术哪个平台好 连接数据库出现 数据库登陆 保护公司网络安全有哪些措施 软件开发se是做什么的 武汉弈速腾网络技术有限公司 瑾瑜软件开发公司 杭州通信网络技术信息推荐 leaf游戏服务器平滑重启 网络技术专业能摆什么地摊 管家婆无法连接服务器 国家网络安全宣传周是几月份 多媒体软件开发课程 登录公司的网盘找不到服务器 二年级网络安全ppt 香港网络安全共享平台 济南应用软件开发平台 网络安全工程师与不法份子 可以从ei数据库下载论文吗 数据库和流处理的区别 歌尔的软件开发工程师岗位 以下不属于网络安全特征的是 周光涛 联通网络技术研究院 哈利波特如何搜索服务器 网络安全意识培训信息报道 数据库安全性控制的5种方法 丰台回收二手服务器报价单 计算机网络技术专业基础证书 银川数据防泄密软件开发 SQL数据库表保存
0