该项目的建设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的有关系

传递性依赖



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd29iZW5kaWFua3Vu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

执行命令能够查看依赖树

dependency:tree

查看结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd29iZW5kaWFua3Vu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

依赖冲突解决的方法

test-a:

源码下载

test-b:

源码下载

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd29iZW5kaWFua3Vu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

将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>

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

时间: 2024-12-23 15:39:49

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

搞定:找不到该项目,请确认该项目的位置的办法

Xp\Windows7\Windows8 删除文件时,遇到"找不到该项目 请确认该项目的位置 然后重试"的简单解决办法 工具/原料 .txt文本文档 方法/步骤 1 出现此问题的原因: 一.文件或文件夹名称不符合Windows命名规范;比如名称中含有..等特殊符号; 二.使用下载工具创建的文件夹,在未下载完成前自行删除文件 三.系统备份文件GHOST创建的文件(我是系统备份的ghost产生的,装双系统时) 四.恶意文件生成的防删除目录 2 1.打开我的电脑,或者任意文件夹,在显示已知文

使用maven一步一步构建spring mvc项目

1      使用eclipse构建maven web项目 1.1新建Maven的web项目 打开菜单File –New-MavenProject. 点击Next 选择模板类型archtype——maven-archtype-webapp.然后点击Next. 输入Group Id和artifact Id.Group Id一般填入项目名称,Artifact Id一般填入子项目的名称. 生成的项目文件结构如下所示: 选择pom.xml文件,并打开,界面如下所示: 增加Properties:展开Pro

Maven学习笔记(四):坐标与依赖

Maven坐标详解: Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标的元素包括groupId.artifactId.version.packaging.classifier.我们只需要提供正确的坐标元素,Maven就能找到对应的构件.比如当需要使用Java5平台上的TestNG的5.8版本时,就告诉Maven:"groupId=org.testng; artifactId=testng; version=5.8; classifer=jdk15,

Maven 可选的依赖和依赖排除

转载自并发编程网 – ifeve.com本文链接地址: <Maven官方指南>可选的依赖和依赖排除 简介 这节主要讨论了可选的依赖排除功能.这将帮助用户理解它们是什么,怎么使用它们,它们是怎么工作的,和使用它们的最好的方式.同样也解释了为什么排除是在每个依赖的基础上,而不是在POM级别. 可选的依赖 当不可能把一个项目分裂成子模块(不管什么原因)的时候,我们可以使用可选的依赖.它的思想就是:在项目中一些依赖仅仅被某些功能使用,并且如果这个功能不被使用,这个依赖就不需要.理想情况下,根据核心的功

Maven的使用《二》之依赖、继承、聚合

问题?Maven的使用<二>之依赖.继承.聚合 前面已经讲到了环境的搭建(环境搭建链接),这里就不重复了.下面的主要是对依赖.继承.聚合详细说明. 这里用的编译软件是eclipse,要装maven的插件(下载地址和安装方法:点击下载链接). 然后装完后,这个时候插件已经在Preference里面了,但是插件还不能用,需要我们做一些设置. 一般来说,做到这里就可以用了.但是我在用的过程中会出现这样的一种错误(点击查看链接),经过查询资料,已经得到了很好的解决办法.做下面设置(把jir改成jdk格

maven 工程启动找不到 Spring ContextLoaderListener 的解决办法

用maven 工程搭建项目,在搭建好之后,运行时却抛出了这样的错误:  Error configuring application listener of class org.springframework.web.context.ContextLoaderListener  java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener, 这说明根本没有找到我们在 web.xml 里

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

项目构建之maven篇:8.maven发布web工程及基于spring mvc,jetty实现的用户管理demo

web工程目录结构 pom/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&qu

项目构建之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项目(模块),推荐实际项