您的位置:首页 > 编程语言 > Java开发

maven多工程应用,spring MAVEN多个子模块之间的调用

2017-12-21 17:23 507 查看


1、ds系统中有两个模块ds-admin和ps-service,ds-admin负责前台展示,ds-service负责后台数据处理,ds的多模块部署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.suning.search</groupId>

  <artifactId>ps</artifactId>

  <packaging>pom</packaging>  

  <name>ds-parent</name>  

  <version>0.0.1-SNAPSHOT</version>

  <modules>

  <module>ds-admin</module>

  <module>ds-service</module>

  </modules>

  <dependencyManagement><!--admin和service公用的依赖放在这里-->

    <dependencies>

        <dependency> 

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>3.8.1</version>

           <scope>test</scope>

        </dependency>

    </dependencies>  

  </dependencyManagement>

</project>

2、ds-service作为ds-admin的依赖,pom.xml设置时应该打包为jar包

3、ds-admin引用ds-service中的接口时,只需加上ds-service的依赖即可,ds-admin的pom.xml配置如下

<dependency>

        <groupId>com.suning.search</groupId>    

        <artifactId>ds-service</artifactId>    

        <version>${project.version}</version>    

    </dependency>

遇到的问题以及解决方案:

用了上面的依赖以后本以为ds-admin系统已经可以调用ds-service中的URL接口进行redis和hbase的访问了,但是会报错。

报错1:找不到定义redis和hbase的bean

解决方案:由于redis和hbase的bean是用xml文件定义的,所以将redis和hbase的xml配置文件都考到ps-admin系统中,并在SpringMVC-servelet.xml中引用。

报错2:引用了以上的文件又发现了一个问题:ds-admin中没有com.suning.controller这个包,而ps-service中有com.suning.controller这个包,且ps-service有一个URL的拦截方法写在

com.suning.controller.BaseServiceController.java这个类中即

@RequestMapping(value = "/redis111.json", produces = "application/json; charset=UTF-8")
public void getRedisData(@RequestParam("value") String value, HttpServletResponse response)

       {...}

当ps-admin系统访问ps-service中的/redis111.json这个URL时页面会报404无法找到这个URL。

解决方案:

在ds-admin系统中增加com.suning.controller这个包,且在SpringMVC-servelet.xml中增加

<context:component-scan base-package="com.suning.controller"/>

这样就可以访问ps-service系统中的/redis111.json这个URL了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: