Maven--多模块依赖实例解析(五)

《Maven--搭建开发环境(一)》

《Maven--构建企业级仓库(二)》

《Maven—几个需要补充的问题(三)》

《Maven—生命周期和插件(四)》

《Maven--多模块依赖实例解析(五)》

这是最后一篇,做一个多模块依赖的正式例子,简单的讲一下单元测试、覆盖率以及发布和站点的部署。只想讲讲和Maven 相关的东西,因此,注重看 pom 文件,里面具体的代码就不实现了,下面是我项目骨架:

Maven--多模块依赖实例解析(五)_第1张图片

首先创建一个MavenProject,命名为demo-parent,此为父模块,重要的是如下两步:

Maven--多模块依赖实例解析(五)_第2张图片

所选的的模板是quickstart

Maven--多模块依赖实例解析(五)_第3张图片

pom文件中的配置如下:



  4.0.0

	 com.tgb.demo
	 demo-parent
	 0.0.1-SNAPSHOT
	 pom
	
	 demo-parent
	 http://maven.apache.org

	 
	   UTF-8
	   3.1.1.RELEASE
	 

	 
	 	demo-core
	 	demo-persistent
	 	demo-service
	   demo-web
	 
  
	
	 	
			
				org.springframework
				spring-context-support
				${springframework.version}
			
			
			    junit
			    junit
			    4.8.2
			    test
			 
		
	 
  
	
		
			
				
			        org.apache.maven.plugins
			        maven-compiler-plugin
			        2.3.2
			        
			          1.5
			          1.5
			          UTF-8
			        
				
				
				  
			       org.apache.maven.plugins  
			       maven-resources-plugin  
			         
			              UTF-8  
			         
				

			
		
	

后面我们会一一讲解上面这个pom文件,接下来,继续创建MavenProject或者MavenModuleModule在创建时需要选择父模块,而Project创建完成之后需要在pom中添加依赖的父模块,没什么区别,将此模块命名为demo-core,之后依次创建demo-persistentdemo-servicedemo-web,值得注意的是,创建demo-web时选择的模板必须是webappdemo-webpom配置如下,其余的都和demo-web差不多,读者可仿照配置:



  4.0.0
  
    com.tgb.demo
    demo-parent
    0.0.1-SNAPSHOT
  
  com.tgb.demo
  demo-web
  0.0.1-SNAPSHOT
  war
  demo-web Maven Webapp
  http://maven.apache.org

  
		
			${project.groupId}
			student-service
			0.0.1-SNAPSHOT
		
		
			org.springframework
			spring-webmvc
		
	
	
		demo-web
		
			
				org.mortbay.jetty
				
				jetty-maven-plugin
				
					2000
					
					
						/stu
					
					
						
						
							8787
							500000
						
					
				
			
			
		
	

OK,几个模板创建完成后,我想你的模块有可能在报错,那么接下来需要设置编译、发布等等,我废话不多说,右击你的模块,然后打开Properties窗口,按照下面的图依次设置:

选择javabuild path

Maven--多模块依赖实例解析(五)_第4张图片

再到javacompiler,把编译jdk给改了:

Maven--多模块依赖实例解析(五)_第5张图片

现在来设置WTP

Maven--多模块依赖实例解析(五)_第6张图片

Maven--多模块依赖实例解析(五)_第7张图片

以后设置wtp编译目录:

Maven--多模块依赖实例解析(五)_第8张图片

Maven--多模块依赖实例解析(五)_第9张图片

到此为止我们的大概环境算是配置完成了,那么接下来就需要分析很重要的pom文件了,一些基础的东西我不会讲,大家可上网查,先来分析demo-parentpom文件,在demo-parentpom值得注意的有以下几点:

1.pom,必须改成pom,不是jar,也不是war,因为他是parent,大家可以想想接口的作用;

2.必须要配上你所有相关的模块,当eclipse导入项目时,就是根据这个标签把相关的模块一起导入进来的;

3.消除重复,在中,配置了3.1.1.RELEASE,下面依赖配置中就可以直接引用此配置了,如果将来改变版本,既改此一处;

4.消除多模块依赖配置重复,我们知道依赖是可以继承的,既父模块中定义的依赖,子模块可自动继承,但是有些子模块需要,有些不需要的情况下该怎么办呢?那就必须用标签了,子模块的pom中就可以junitjunit ,这样引用,没有引用的就不会自动继承;

5.消除多模块插件配置重复,与dependencyManagement类似的,我们也可以使用pluginManagement元素管理插件。一个常见的用法就是我们希望项目所有模块的使用MavenCompiler Plugin的时候,都使用Java 1.6,以及指定Java源文件编码为UTF-8,如父模块的POM中的配置;这段配置会被应用到所有子模块的maven-compiler-plugin中,由于Maven内置了maven-compiler-plugin与生命周期的绑定,因此子模块就不再需要任何maven-compiler-plugin的配置了。与依赖配置不同的是,通常所有项目对于任意一个依赖的配置都应该是统一的,但插件却不是这样,例如你可以希望模块A运行所有单元测试,模块B要跳过一些测试,这时就需要配置maven-surefire-plugin来实现,那样两个模块的插件配置就不一致了。这也就是说,简单的把插件配置提取到父POMpluginManagement中往往不适合所有情况,那我们在使用的时候就需要注意了,只有那些普适的插件配置才应该使用pluginManagement提取到父POM中。

完成了环境的配置,下面就是单元测试、覆盖率报告和站点的发布了,其实这些都是对插件的应用,单元测试可以用maven-surefire-plugin,覆盖率Maven自带了一个插件,叫做cobertura,可以执行目标cobertura:coberturaweb的发布,有jettytomcat插件,具体用法我已经在上面给出来了,站点的发布有maven-project-info-reports-plugin插件,使用mvnsite可以完成站点的生成,具体用法如下

Maven--多模块依赖实例解析(五)_第10张图片

还有很多插件,三天三夜都说不完,掌握再多也是徒劳,极为重要的是,自己需要什么随时去查,会查,然后能迅速掌握插件的用法,关于Maven到此结束了,这篇写的很粗糙,大家有问题随时留言或邮件。

你可能感兴趣的:(Maven--多模块依赖实例解析(五))