Maven简明教程(4)---依赖关系(理论篇)

[工欲善其事,必先利其器]

在本文中,我们来简单介绍maven中几个常见的概念,这些概念在日常开发中经常见到。各位看官可以下面的介绍作为参考知识。

-----------------------------------------------------------------------------------------------------------------------------------------

正文开始:

1.本地仓库与远程仓库

本地仓库:即我们本地jar存放的目录,正常情况下pom文件中存在的依赖关系都会在本地仓库中出现。即使本地暂时不存在,maven也会帮我们自动下载到本地目录。

远程仓库:即一个包括所有公有jar包的地址,我们项目中所有需要使用的jar包都会从此地址上寻找。

2.依赖关系

a.jar包的依赖关系

如junit包,即使我们在pom文件中只配置了一个依赖关系,但是,我们在maven dependencies下能够看到2个jar包。这其实是maven帮助我们下载了junit包的依赖,而在开发时,我们不需要关心junit的依赖。我们以下面的关系来说明:

A----->B----->C----->D...

在使用时,我们如果只想使用A包,那个我们只需要引入A包即可。BCD等我们并不需要关心。

在如同一个项目中存在如下关系:

A----->B----->C----->D,X----->Y----->D

我们发现,A与X都依赖了D。此时,maven只会下载一个D供我们使用而不用关心重复。

b.项目的依赖关系:

在项目管理过程中,我们经常遇到的场景是MVC结构划分的系统。为此我们创建了不同的层次概念如controller层,dao层,service层等。对于这些内容常用的做法是用package来划分。这里,我们来介绍一种更加推荐的做法,使用maven管理这些不同的模块。

本例中我们使用的依赖关系图,如下:


这里实际来演示这个工程的各个模块会占据大量篇幅,因此,我们下面仅叙述步骤,即配置文件的配置方式,请各位看官自行创建工程来查看结果。

(1)以maven创建hello-entity工程,工程类型为quickstart。具体请参照前文。

(2)在src/main/java下,自定义一个包,创建一个实体类,如User.java.

(3)以maven创建hello-dao工程,工程类型为quickstart。具体请参照前文。

(4)在src/main/java下,自定义一个包,创建一个接口或者类,如userDao.java.将User实体引入,此时会报错,请读者稍安勿躁。[这里读者可以根据需求来决定真实/模拟的访问数据库]

(5)以maven创建hello-service工程,工程类型为quickstart。具体请参照前文。

(6)在src/main/java下,自定义一个包,创建一个接口及实现类,如IUserSerivce.java,将UserServiceImpl.java来接入dao,此时会报错,请读者稍安勿躁。[这里读者可以根据需求使用spring等基础框架,或者仅作为外壳使用]

(7)以maven创建hello-web工程,工程类型为webapp。具体请参照前文。

(8)在src/main/java下,自定义一个包,创建一个controller,或者servlet,将IUserSerivce或者UserServiceImpl引入。此时会报错,请读者稍安勿躁。[这里读者可以根据需求使用spring等基础框架,或者使用servlet]

重点来了!!!我们接下来介绍各个工程的pom文件的配置。

(a)hello-entity工程,作为最底层的模块,起不需要配置别的依赖项。但是请在其pom文件上右键run as-->maven install

(b)hello-dao工程需要依赖hello-entity工程,需要在pom文件中加入下面的配置:


	
	hello-entity
	
这里如果正确配置,即可在maven dependencies下看到hello-entity工程文件夹。【下图仅为举例】

Maven简明教程(4)---依赖关系(理论篇)_第1张图片
(c)类似的,我们在service层pom文件只写入dao层的依赖,在web层只写入service层的依赖。正如我们前文介绍的,我们只关心紧相邻的上一层,maven会帮助我们自动引入其他依赖。

c.最后,我们介绍一种常用的继承关系

对于上面工程中的依赖关系我们最好能够统一管理,这样能够防止不同模块之间可能存在的依赖项不同带来的风险,如版本号不同造成的差异等。

第一步,我们先创建一个hello-parent工程,创建工程时,请在前文步骤2中选择create a simple project。

第二部,在其pom文件中,写入所有子工程的依赖项,示例pom文件如下:


	4.0.0
	com.java.hello
	hello-parent
	0.0.1-SNAPSHOT
	pom

	
		../hello-dao
		../hello-service
		../hello-web
		../hello-entity
	

	
		4.1.7.RELEASE
		4.12
		1.2.17
	

	
		
			
				log4j
				log4j
				${log4j.version}
			
			
				junit
				junit
				${junit.version}
				test
			
			
				org.springframework
				spring-core
				${spring.version}
			
		
	
pom文件里,我们首先用modules表示各个字模块,”../“表示相对路径,因为parent工程与我们其他工程平级。接着,我们使用porperties来管理我们各个jar包的版本号,书写方式如上文示例。最后,在下面的dependencies中写入jar的名称即可。

第三步:在子模块的pom文件中写入如下内容:


	com.java.hello
	hello-parent
	0.0.1-SNAPSHOT
	../hello-parent/pom.xml
写入之后,pom文件中出现的黄叹号行删除即可,这是由于继承关系已经自定的加入其中,不需要再写一遍。

----------------------------------------------------------------------------------------------------------------------------------------------

至此,Maven简明教程(4)---依赖关系(理论篇)结束

特别备注:

上面的说明,我们没有以实际用例来说明,是因为一方面举例会涉及大篇幅的代码,另一方面,也会涉及到spring,servlet,数据库等方面的内容,与我们这里的主题相距甚远,还请各位读者能够谅解!


你可能感兴趣的:(开发工具)