• maven坐标及依赖范围的学习(1)


    首先,我们先了解什么是maven的坐标(重中之重):

    在这里我们可以看到那三个红色的行,基本是pom.xml中出现的最多的配置

        例如这个配置:这里我们可以看到我们这个项目的pom文件中,他对名为(maven-jar-plugin)的插件进行了依赖(dependency,依赖)

    同时这个插件的版本为2.4,不过要注意的是,这个插件并不是一加载这个插件就会执行它的任务,因为这个插件要在开发者执行特定的命令后才会执行(关于这些在eclipse里执行maven的命令较为常用的几个,详情见 http://blog.csdn.net/u011939453/article/details/43017865),你可以看见有一个是package命令(注意mvn可以不写,因为在eclipse里run as默认是在maven里运行的),,运行完成之后机会惊喜的发现,你的项目的target文件里多了一个jar包!!(这里可能你会出现并没有jar包,这时你最好右键点击你的项目名,找到maven选项,update一下!!

        关于这个scope(依赖范围),这个其实作用是指,你依赖(dependency)里的jar包或者其他项目,他们并不是全局跟着你的项目周期走的!如图,具体范围:

    可能你对这个依赖范围不是很明白,但是你可以通过这个表的例子这个列来看事务本质:

            (1)log4j,可以说这个日志几乎要在项目的全局出现,所以他在三个时期都是有效的,所以scope的范围是compile。

            (2)junit,相信这个包很多人一定很熟悉(不熟悉的先去百度其他帖子看看这是什么),我相信大家一定知道,当你把你的项目源码打包给你的客户时,你一定不会想把那么多测bug的代码也一起给他吧?所以scope为test时,这个依赖的东西是不是进入打包阶段的!!

            (3)servlet-API,这个其实可以这样理解,我们平时在web代码时,例如写servlet,我们需要引入servlet的jar包,因为我们在编译期间需要用到这些类和接口,就像A类里需要import B类似得,这样在写代码时不会出现编译错误(语法错误!),但是当我们往tomcat上发布时,Tomcat本身就提供了这个jar包,这里就可能产生冲突,所以这里的servlet jar包就需要设置provided,以确保不在运行期间起作用,servlet API不会出现在打包好的war中,(war,web应用)。

            (4)JDBC Driver,这是一个依赖范围是runtime的jar包,是一个只在运行期间起作用的依赖jar包,在runtime scope下定义的依赖只会在运行期可用,而在构建期的类路径下不可用。这些依赖将会被打包到最终的artifact中。比如你有一个基于web的应用需要在运行时访问MySQL数据库。你的代码没有任何MySQL数据库驱动的硬依赖。你的代码仅仅是基于JDBC API来编写,在构建期并不需要MySQL数据库驱动。然而,在运行期,就需要相应的驱动来操作MySQL数据库了。因此,这个驱动应该被打包到最终的artifact中。

  • 相关阅读:
    Delphi中Format与FormatDateTime函数详解
    常用的日期时间函数
    100m和1000m网线的常见制作方法
    Delphi cxGrid –--> RecordIndex out of Range
    局域网共享需要密码
    提高AdoQuery的速度
    string literals may have at most 255 elements
    001-project基本使用
    Java-idea-创建maven项目,部署项目,部署服务器,简单测试
    003-spring结合java类调用quartz
  • 原文地址:https://www.cnblogs.com/Booker808-java/p/7959693.html
Copyright © 2020-2023  润新知