美文网首页
maven项目如何依赖另一个项目的配置文件

maven项目如何依赖另一个项目的配置文件

作者: 不知名的蛋挞 | 来源:发表于2018-11-16 23:17 被阅读236次

概述

某系统如今的项目结构如下:

AAProgram
  | - aa_data
       | - src
         | - main
          | - java 
       | - pom.xml
  | - aa_service
       | - src
         | - main
          | - java 
       | - pom.xml

BBProgram
  | - bb-service
       | - src
         | - main
          | - java 
          | - resources
            | - properties
               | - jdbc.properties
            | - applicationContext.xml
            | - applicationContext-jdbc.xml
            | - applicationContext-memcache.xml
       | - pom.xml
  | - bb-api

AAProgram项目下面有两个子项目,分别为:

  • aa_data:数据库连接、查询等代码
  • aa_service:业务逻辑代码

BBProgram项目下面有两个子项目,分别为:

  • bb-service:导入了aa_data项目、aa_service项目的maven依赖jar包,为aa_data、aa_service提供配置文件
  • bb-api:对外提供API

我们运行整个项目的时候,就运行BBProgram的一个Entrance类来启动整个Spring容器。因为bb-service导入了aa_data项目、aa_service项目的maven依赖jar包,所以这时候实际上整个bb-service项目的结构就是这样的:

  | - bb-service
       | - src
         | - main
          | - java 
             (aa_data项目的代码)
             (aa_service项目的代码)
             (bb-service项目的代码)
          | - resources
            | - properties
               | - jdbc.properties
            | - applicationContext.xml
            | - applicationContext-jdbc.xml
            | - applicationContext-memcache.xml
       | - pom.xml

aa_data项目、aa_service项目虽然没有resources文件夹(也就没有配置文件),但是导入到bb-service之后就可以用bb-service里面的配置文件了。

现在要为该项目添加一个定时任务定时刷新系统的memcache缓存,用到了公司的一个定时任务框架,定时任务的配置和启动都在公司的定时任务网站进行操作,而代码主要是编写定时任务的内容。因此定时任务的编写需要新建一个项目:

AAProgram
  | - aa_data
       | - src
         | - main
          | - java 
       | - pom.xml
  | - aa_service
       | - src
         | - main
          | - java 
       | - pom.xml
  | - aa_time_job
       | - src
         | - main
          | - java 
       | - pom.xml

因为aa_time_job项目是定时任务的项目,配置和启动都在公司的定时任务网站进行操作,是不依赖于spring的,定时执行memcache缓存的刷新,所以也就没办法像aa_data、aa_service项目一样导入到bb-service。而缓存的刷新需要查询数据库,并且定时任务类也要用到spring的annotation等配置,也就是说aa_time_job项目需要读取bb-service项目的配置文件,并且还要自己手工加载spring容器。

那么,首先就要解决,怎么把bb-service项目的配置文件弄到aa_time_job项目里面呢?

maven-dependency-plugin插件

百度之后发现了maven-dependency-plugin这么一个插件,dependency 插件我们最常用到的是 dependency:copydependency:copy-dependenciesdependency:unpackdependency:unpack-dependencies这四个,如果要实现上述的场景,我们需要的是第三个。

dependency:unpack官网的解释就是:like copy but unpacks。打个比方,bb-service项目打包成jar包之后,封装了配置文件,现在我们的aa_time_job项目要使用到这些配置文件,那么在jar包就肯定不行了,我们需要将bb-service项目里面的配置文件提取到aa_time_job项目中的resources文件夹才能使用。那么我们怎么将这些提取出来呢,当然只能打开了啊。

步骤如下:

(1)把bb-service项目打成一个jar包:bb-service.jar
(2)让aa_time_job项目依赖于bb-service.jar

<dependency>
            <groupId>com.vip.bb</groupId>
            <artifactId>bb-service</artifactId>
            <version>${bb-service.version}</version>
</dependency>

(3)在aa_time_job项目中pom.xml添加maven-dependency-plugin插件

 <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-dependency-plugin</artifactId>
       <version>2.8</version>
       <executions>
           <execution>
              <id>unpack</id>
              <phase>generate-resources</phase>
              <goals>
                  <goal>unpack</goal>
              </goals>
              <configuration>
                <artifactItems>
                  <artifactItem>
                     <groupId>com.vip.bb</groupId>
                     <artifactId>bb-service</artifactId>
                     <version>${bb-service.version}</version>
                      <overWrite>true</overWrite>
                      <outputDirectory>${project.build.directory}/classes/resources/main</outputDirectory>
                      <includes>**/properties/*,**/*.xml,**/*.properties</includes>
                   </artifactItem>
                  </artifactItems>
                </configuration>
             </execution>
         </executions>
</plugin>

这样我们就把bb-service项目的配置文件文件输出到resources文件夹下面了。

其实不用maven-dependency-plugin插件..

但是我在aa_time_job项目里面追溯applicationContext.xml的位置,发现直接引到了bb-service.jar包里面的applicationContext.xml而不是我提取出来到resources文件夹里面的applicationContext.xml。

所以不用特意把配置文件提取出来....

相关文章

  • maven项目如何依赖另一个项目的配置文件

    概述 某系统如今的项目结构如下: AAProgram项目下面有两个子项目,分别为: aa_data:数据库连接、查...

  • Maven实战之初识Maven

    Maven实战之初识Maven Maven的简单介绍 作用:Maven主要用于项目的构建,管理项目的依赖以及项目的...

  • SpringMvc基本环境配置

    Maven依赖 基于Maven管理的SpringMvc项目基础的依赖 pom.xml 初始配置文件web.xml ...

  • mac上的Idea maven项目迁移到win10

    以 BayesPro 项目为例。 1. mac上的Idea maven项目结构 可以看出,maven依赖配置文件 ...

  • maven项目测试

    maven项目中pom.xml文件,包含了项目的配置信息,项目的依赖项,插件等都可以在pom.xml中配置

  • 8. 约定优于配置

    转载地址 maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的几个配置项而已。maven有自己...

  • Maven中如何管理多模块项目的依赖关系

    Maven 中如何管理多模块项目的依赖关系 平时在查看项目的过程中,发现包的依赖关系及其随便,在各个子模块中都各自...

  • mybatis-one

    简单的mybatis项目构建使用maven构建项目: 依赖包: mybatis配置文件:mybatis-confi...

  • Maven 约定优于配置

    maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的几个配置项而已。maven有自己的一套默认...

  • Maven之使用规范

    maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的几个配置项而已。maven有自己的一套默认...

网友评论

      本文标题:maven项目如何依赖另一个项目的配置文件

      本文链接:https://www.haomeiwen.com/subject/endufqtx.html