gradle项目依赖公共模块

gradle项目依赖公共模块

前言

  • 当有几个服务内部都依赖于一些共同代码时,通常我们会把这部分公共代码抽取剥离出来,然后打成jar包,供其他服务依赖
  • 但这样有个很明显的缺陷就是每次一旦公共代码有更新,那么就必须重新打包jar,再更新到其他服务,其他服务再重新编译打包,在开发阶段这部分公共代码可能还不是很稳定,会随着需求不断增加新内容,那么这种打jar包的方式就显得非常麻烦
  • 于是就在想,能不能不打成jar,而是每个服务都依赖这个公共代码工程,然后跟随服务一起打包编译,这样公共代码即使更新也不用手动去打jar包更新
  • 经过试验,这样的办法的确是有的,本文就以gradle项目示例

步骤

  • 假设目前有三个工程,一个为公共代码(commoncode),两个为业务工程(service-a,service-b),它们在本地目录为

    services
    	- commoncode
    		- build.gradle
    		- settings.gradle
    	- service-a
    		- build.gradle
    		- settings.gradle
    	- service-b
    		- build.gradle
    		- settings.gradle
    
  • 其中service-a和service-b都依赖commoncode

  • 修改service-a的build.gradle和settings.gradle,service-b类似做同样的修改

  • build.gradle修改如下:

    //service-a的build.gradle文件增加 compile project(':commoncode')
    dependencies {
       ...
        compile project(':commoncode')
    }
    
  • settings.gradle修改如下:

    rootProject.name = 'service-a'
    
    //includeFlat 'commoncode' //以下两行代码可以用此句代替,表示的是平级
    include 'commoncode'
    project (':commoncode').projectDir=new File(settingsDir,'../commoncode')
    
  • 经过以上步骤后,对service-a执行打包命令gradlew build,在打完的jar中的BOOT-INF/lib目录下可以看到已经包含了commoncode这个jar包

  • 这样以后就能愉快修改commoncode了,不用每次都手动去更新各个服务的commoncode了

注意

参考

idea gradle 依赖外部项目 - liuguodong1413的博客 - CSDN博客
https://blog.csdn.net/liuguodong1413/article/details/79149624

发布了126 篇原创文章 · 获赞 37 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/huweijian5/article/details/89310229