当前位置: 首页 > news >正文

该项目的建设maven片:4.协调和依赖,spring依赖注入demo

源码下载


协调


  <groupId>com.demo.animal</groupId>
  <artifactId>animal-core</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
groupId:定义当前maven项目隶属的实际项目

artifactId:定义实际项目中的一个maven项目(模块),推荐实际项目项目做为artifactId的前缀,如:nexus-indexer

version:maven项目的当前版本

packaging:maven项目的打包方式


依赖


pom.xml

<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.demo.animal</groupId>
	<artifactId>animal-core</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

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

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

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.0.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>3.0.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.0.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>3.0.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.kenai.nbpwr</groupId>
			<artifactId>javax-inject</artifactId>
			<version>1.0-201002241208</version>
		</dependency>
	</dependencies>
</project>




maven通过在dependency元素中设置坐标来使用依赖,參数例如以下:

groupId,artifactId,version:依赖的基本坐标,最重要

type:依赖类型,相应于项目坐标定义的packaging,大部份情况下,这个不用配置,默觉得jar

scope:依赖范围

optional:标记依赖是否可选

exclusions:用来排除传递性依赖


依赖范围


依赖范围就是用来控制与这三种classpath的关系(编译classpath,測试classpath,执行classpath)

依赖范围的种类:

compile:编译领带范围,默认,对于编译,測试,执行三种classpath都有效,如:spring-core

test:測试依赖范围,仅仅对測试classpath有效, 如:junit

provided:已提供依赖范围,对编译与測试classpath有效,如:servlet-api

runtime:执行时范围,对測试与执行有效,如:jdbc驱动

system:系统依赖范围,与provided一样

依赖范围与classpath的有关系


传递性依赖



执行命令能够查看依赖树

dependency:tree

查看结果:









依赖冲突解决的方法


test-a:

源码下载



test-b:

源码下载



将test-a与test-b,安装到本地仓库,供test-c依赖

test.c

源码下载


为什么会是依赖commons-logging-1.1.3.jar?

由于:当第二直接依赖与第三直接依赖都存在时,它是优先选择第二直接依赖(路径短)




继续

test.d

源码下载



将test-d安装到本地仓库。供test-c依赖

test-c

源码下载



假设须要使用test-b的commons-logging-1.1.3.jar

能够进行例如以下配置,在test-d中增加exclusions

<dependency>
			<groupId>com.demo.test</groupId>
			<artifactId>test-d</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>




版权声明:本文博客原创文章,博客,未经同意,不得转载。

相关文章:

  • jQuery 弹出窗口的形式一直是具体案件的中心
  • 收集的一些链接
  • 盘点20款表现出众的HTML5游戏
  • VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
  • Linux系统中nc命令的基本用法
  • nginx使用GeoIP限制访问并支持白名单
  • 2015Q1中国手机游戏市场监测报告
  • 烂泥:学习ubuntu之快速搭建LNMP环境
  • U盘安装Windows
  • C语言时间处理
  • PHP IDE 框架 服务器 相关
  • liux下ftp链接服务器的常用命令
  • 最近有个需求,就是把某个网址跳转到另外一个网址
  • socket server framework 框架
  • ASP.NET异步处理
  • HTTP--网络协议分层,http历史(二)
  • JAVA SE 6 GC调优笔记
  • java中具有继承关系的类及其对象初始化顺序
  • JDK 6和JDK 7中的substring()方法
  • 反思总结然后整装待发
  • 高度不固定时垂直居中
  • 记一次和乔布斯合作最难忘的经历
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 聊聊flink的BlobWriter
  • 批量截取pdf文件
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #{}和${}的区别是什么 -- java面试
  • #FPGA(基础知识)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (8)STL算法之替换
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (转)EOS中账户、钱包和密钥的关系
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net6 webapi log4net完整配置使用流程
  • .net实现客户区延伸至至非客户区
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [<MySQL优化总结>]
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [C#] 如何调用Python脚本程序
  • [C#]winform部署PaddleOCRV3推理模型
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [CLR via C#]11. 事件
  • [cogs2652]秘术「天文密葬法」
  • [Excel VBA]单元格区域引用方式的小结
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [git]git命令如何取消先前的配置
  • [IE技巧] 让IE 以全屏模式启动
  • [Linux] CE知识随笔含Ansible、防火墙、VIM、其他服务