#maven--使用pom.xml管理子模块jar包

在web工程的war包中,怎么实现子模块jar包在打web层的war包时,将子模块的jar包一起打入web的war包中呢?
第一步:在parent父工程的pom.xml中编写所有子工程的依赖形式:

 
	
		
			${project.groupId}
			gdfs-action
			${project.version}
		
		
		
			${project.groupId}
			yx-action
			${project.version}
		

		
			${project.groupId}
			yx-service
			${project.version}
		

		
			${project.groupId}
			yx-dao
			${project.version}
		

		
			${project.groupId}
			yx-tools
			${project.version}
		
	
  

在上面的配置中,${project.groupId}其实就是指的元素值com.yzh,${project.version}是指的元素值0.0.1-SNAPSHOT,当子工程中通过下面的配置继承父工程时:

  
    com.yzh
    yx-parent
    0.0.1-SNAPSHOT
  

我们在子工程中通过下面的方式进行引用:

  
    
		${project.groupId}
		yx-action
	
  

我们看到在子工程中已经省略了版本号,因为继承了父工程的版本号,如果所有的子工程都通过这种方式来继承父工程的版本号,那么就可以实现所有子工程中引用同一版本的其他工程文件,统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。 因此dependencyManagement配合

  
    com.yzh
    yx-parent
    0.0.1-SNAPSHOT
  

实际上就是引用了父工程的依赖,然后可以到本地目录去引用工程jar包,这样war包就有了这些工程jar包。通过dependencyManagement来完成版本的继承与管理,也就是统一管理项目的版本号。

练习:定义其他依赖,通过dependencyManagement来管理,统一jar包的版本号。
第一步:在parent工程的pom.xml中定义依赖:

  
			
	    
	      junit
	      junit
	      4.10
	      test
	    
	
  

第二步:在子模块中继承父工程,通过继承关系,也继承了junit jar包的版本号,因此,在子模块中,我们可以这样定义junit jar包:

  
    
      junit
      junit
    
  

(3)下面的错误应该如何解决?
在子模块中引入了其他子模块x对应的依赖,但是在这个x模块的jar还没有生成时,就会提示下面的错误:

那么怎么解决这个问题?
首先这种情况无法通过打包parent来解决,因为yx-entity的错误阻止了进一步打包,那么怎么办呢?
(1) 通过追本溯源法,先打包yx-entity这个模块的jar包,如果这个模块也引用了其它模块的jar包,那么还需要追溯到其他模块进行打包。
(2) 先删除当前子模块的yx-entity依赖,然后对parent进行打包,再引入yx-entity依赖。

[ERROR] Failed to execute goal on project yx-service: Could not resolve dependencies for project com.yzh:yx-service:jar:0.0.1-SNAPSHOT: Could not find artifact com.yzh:yx-entity:jar:0.0.1-SNAPSHOT in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public/)
上面的错误是因为yx-entity jar包没有生成造成的,这时候去本地依赖去找是没有生成相应的jar包的,那么我们可以直接对yx-entity进行打包,然后再对yx-service进行打包。
(3)根据判断,我们可以知道,各个工程之间的关系:
yx-parent包括了yx-web、yx-dao、yx-action、yx-entity、yx-service和yx-tools,其中yx-web通过yx-action提供的接口来完成后台访问,因此yx-web工程中需要引入yx-action的工程依赖,而yx-action涉及到实体类、service接口,因此需要引入yx-entity的工程依赖和yx-service工程依赖;而yx-service涉及到dao层操作和实体类操作,还有可能使用了工具类,因此需要引入yx-dao的工程依赖、yx-entity的工程依赖和yx-tools的工程依赖。通过引用工程jar包,就可以使用其他工程中的类了。

你可能感兴趣的:(maven)