`
schy_hqh
  • 浏览: 555938 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(三)maven依赖包

 
阅读更多
1.eclipse中创建maven项目
打开POM.xml ,添加依赖包
所有依赖都是通过坐标来搜索并引入jar包
坐标的要素:groupId,artifactId,version
附加要素:
scope 默认为compile,可选test,provided,runtime...
packaging 默认为jar,可选pom,war...


坐标的查询可以通过网上仓库进行查询:
http://mvnrepository.com/
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.hqh.maven.user</groupId>
	<artifactId>user-core</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>user-core</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<!-- junit测试单元 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>

		<!-- 日志 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.6.1</version>
		</dependency>

		<!-- ORM -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>3.6.10.Final</version>
		</dependency>
		<dependency>
			<groupId>javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.12.1.GA</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.25</version>
		</dependency>
	</dependencies>
</project>




2.依赖的范围 scope

scope 默认为compile  编译,测试,运行,打包都会依赖导入
scope test 测试包只在本项目使用,不会被依赖导入其他项目中
scope provided 编译,测试时用,运行时不用,容器已提供了,如servlet-api.jar
scope runtime 编译时不用,运行时用,如:数据库驱动jar包


3.通过依赖引入项目的另一个模块

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.hqh.maven.user</groupId>
  <artifactId>user-dao</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>user-dao</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
  		<!-- test范围的包不会被依赖导入,需要显示声明导入 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>
		<!-- 引入项目的另一个模块,所有user-core中compile范围的包都会传递到本项目中 -->
		<dependency>
			<groupId>com.hqh.maven.user</groupId>
			<artifactId>user-core</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
  </dependencies>
</project>



4.依赖传递的冲突

情形一:
当A-->B  A-->C
B-->log4j-1.0.jar  C-->log4j-1.1.jar
则A-->B
规则:
按A的POM.xml中dependency 标签的配置顺序决定,先写哪个就依赖哪个!


情形二:
当A-->B B-->C (A间接依赖C中的jar)
C-->log4j-1.1.jar 
则A-->log4j-1.1.jar
A-->D (A直接依赖D中的jar)
D-->log4j-1.0.jar
则A-->log4j-1.0.jar
规则:
最短路径原则,依赖关系中选取最近的那个依赖


排除依赖

由于最短路径规则,导致引入了log4j-1.0.jar,但是不想使用此版本,可以定制依赖中的传递,只需要在引入某个模块时指定不依赖其中某个jar即可解除依赖传递
<dependency>
	<groupId>com.hqh.maven.user</groupId>
	<artifactId>user-log</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<exclusions>
		<exclusion>
			<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
			</exclusion>
	</exclusions>
</dependency>

明确指定具体jar包使用,传递性依赖将失效
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.12</version>
</dependency>
分享到:
评论

相关推荐

    springboot maven 依赖包3

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包3.

    maven依赖包(用于博客项目)

    本资源“maven依赖包(用于博客项目)”显然包含了一系列与博客项目相关的Maven依赖,这些依赖可能包括数据库连接库、模板引擎、日志框架、安全组件以及其他有助于构建博客平台的Java库。 1. **Maven仓库**: ...

    kettle7.2和8.2相关maven依赖包仓库

    kettle是国外开源的一款ETL集成工具,其最新版8.2版本改为了maven项目,由于其maven仓库下载实在太慢,这里提供了我费了一两天才下载好的依赖包,直接解压放在本地仓库即可。方便好使,好用的给个五星好评。

    springboot 的maven依赖包1

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。

    doris-1.1.3源码编译broker-maven依赖包repository

    《Doris 1.1.3 源码编译 Broker Maven 依赖包 Repository 深度解析》 Apache Doris 是一个高性能、分布式、在线分析处理(OLAP)的数据仓库系统,它提供了快速的数据查询能力,适用于大规模数据的实时分析。在Doris...

    IDEA中Maven依赖包下载不了的问题解决方案汇总.docx

    IDEA 中 Maven 依赖包下载不了的问题解决方案汇总 一、IDEA 中 Maven 依赖包下载不了的问题解决方案 在 IDEA 中,Maven 依赖包下载不了是一个常见的问题,这个问题可能是由于各种原因引起的,例如网络连接问题、...

    maven_package 依赖包(完整)

    在本"maven_package"压缩包中,包含了完整的Maven依赖包,这些包广泛适用于各种Java项目,确保了项目的正常运行和高效开发。比如,提到了"log4j-1.2.17.jar",这是一个著名的日志处理框架,对于系统日志记录至关重要...

    Maven离线依赖包v2

    "Maven离线依赖包v2"指的是一个包含Maven仓库中多种库的压缩文件集合,主要用于在没有网络连接或者网络环境不稳定的情况下,帮助开发者快速构建和运行Java项目。 Maven的依赖管理是其核心功能之一,它通过读取每个...

    maven依赖包2

    【标题】"maven依赖包2"涉及到的是Java开发中重要的构建工具——Maven的依赖管理部分。在Java世界里,Maven是一个广泛使用的项目管理和综合工具,它可以帮助开发者管理和构建Java项目,通过解决项目的依赖关系,使得...

    jodconverter2.2.2.jar Maven依赖包

    标题“jodconverter2.2.2.jar Maven依赖包”涉及到的是一个Java开发中的关键组件,即JODConverter库的一个特定版本。JODConverter是一个开源的文档转换工具,它允许用户在Java应用程序中方便地将各种Office文档格式...

    springboot的maven依赖包2

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包2.

    springboot maven 依赖包4

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包4.

    Maven将带有第三方依赖的可执行程序打包示例

    maven-assembly-plugin 插件打第三方依赖包进 jar,spring 有 org.springframework.beans.factory.parsing.BeanDefinitionParsingException 异常怎么办? maven-shade-plugin 插件打第三方依赖包,spring 有 java....

    maven依赖包

    标题"maven依赖包"暗示了我们正在讨论的是Maven如何处理项目的外部依赖。在Java应用开发中,项目通常会依赖许多第三方库,如Spring、Hibernate、Apache Commons等。Maven的中央仓库存储了大量的开源项目JAR包,...

    maven 中引入依赖的包

    当你需要引入一个新的依赖包时,你需要编辑`pom.xml`文件,添加相应的`&lt;dependency&gt;`标签。 例如,如果你想引入Spring框架的依赖,你可以这样写: ```xml &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-...

    javacv-platform 1.5.7 maven依赖包

    在描述中提到“下载慢的同学来这里”,这可能是指提供了一个镜像源或者快速下载的链接,以便于开发者能更快地获取`javacv-platform 1.5.7`的maven依赖包。通常,如果默认的Maven中央仓库下载速度较慢,开发者可以...

    达梦数7据库j驱动包及方言包,maven依赖jar包,DM达梦数据库jdbc-jar包dialect方言jar包

    标题和描述中提到的"达梦数7据库j驱动包及方言包,maven依赖jar包",指的是用于Java开发的达梦数据库连接驱动和方言实现,这些通常是以JAR(Java Archive)文件的形式提供。JAR文件是Java平台的标准打包格式,它将类...

    maven依赖的包

    已经储存在百度云上,并附上私有链接和密码

    maven依赖包(xdw)

    ** Maven 依赖包详解 ** "Maven 依赖包(xdw)" 提供了一组用于构建基于 Maven 的 SSH 应用程序的库。Maven 是一个项目管理和综合工具,广泛应用于 Java 开发中,它通过管理项目的构建、报告和文档,帮助开发人员...

    SpringBootV2.2版本,Maven依赖包文件

    SpringBootV2.2版本,Maven依赖包文件,包括spring-boot-starter-web、mybatis-spring-boot-starter、spring-boot-starter-jdbc、mysql-connector-java、shiro-spring、mybatis-plus、mybatisplus-spring-boot-...

Global site tag (gtag.js) - Google Analytics