gradle新建工程,多项目依赖,聚合工程

10人阅读 评论(0) 收藏 举报
分类:

一、平级项目依赖includeFlat

我的环境是gradle3.2.1,eclipse-neon,eclipse插件是(Buildship 1.0),jdk1.8

最常见的项目就是多工程平级的项目项目构造如下:

A

B

C

三个工程完全平级A是基础工程打成jar包给C引用,B是jar工程 也是打成jar给C引用。C是web工程打成war包发布。

网上的坑爹教程都是骗人的,没一个能解决这个问题。还是官方文档靠谱,只是72章太多了。

这样的工程配置其实非常简单,新建三个gradle工程

A中的build.gradle完全不用改

B中的settings.gradle

[plain] view plain copy
  1. rootProject.name = 'B'  
  2. includeFlat  'A'  


记得请使用includeFlat表示水平级别。最开始写成了include ‘A’结果坑了我4个多小时。

B中的build.gradle

[plain] view plain copy
  1. dependencies {  
  2.    compile project(':A')  
  3.    testCompile 'junit:junit:4.12'  
  4. }  

请注意
[plain] view plain copy
  1. compile project(':A')  

这个是gradle的依赖工程的写法。有多个就写多个就好

到这里B工程就配置完成了,打B的jar包就可以A一起打了。


C中的settings.gradle,和B的一样加上

[plain] view plain copy
  1. includeFlat  'A','B'  
C中的build.gradle就需要改一下完整的如下
[plain] view plain copy
  1. apply plugin: 'war'  
  2. apply plugin: 'java'  
  3. apply plugin: 'eclipse'  
  4.   
  5. repositories {  
  6.     mavenLocal()  
  7.     mavenCentral()  
  8. }  
  9.   
  10. dependencies {  
  11.     compile project(':A')  
  12.     compile project(':B')  
  13.     compile 'org.slf4j:slf4j-api:1.7.21'  
  14.     testCompile 'junit:junit:4.12'  
  15. }  
修改了几个地方 

1,加上了war的引用  加上之后插件中就显示有war的选项了,build的时候也会默认安装war的方式去打包。

2,中央库被我改成默认使用maven的中央库了

3,同时依赖了A B2个工程


到这里多个平级工程就建好了!其实真的挺简单。


二、聚合工程,模块式开发include

然后开发中还会有一种需求,在maven中叫聚合工程。项目结构如下:

C

|------C1

|------C2

就是一个工程被分为多个模块,每个模块需要在eclipse中显示为单独的工程。

其实写法非常简单,只是把之前的includeFlat改成include就好了

C中settings.gradle

[plain] view plain copy
  1. rootProject.name = 'C'  
  2. include 'C1','C2'  

C1和C2都不需要修改任何代码,只是要在根目录下新增一个名为C1和C2的文件夹,C1和C2的文件夹下需要存在一个语法正确的build.gradle

然后刷新gradle就可以看到工程已经出来了。


三、多工程,多模块依赖(bt依赖)

假设

A

|----A1

C

|----C1

现在如果C1需要依赖A1,那么问题来了,这2个子模块根本没啥关系,如何依赖呢!

A中的settings.gradle

[plain] view plain copy
  1. rootProject.name = 'A'  
  2. include 'A1'  
A1貌似不需要修改啥

C中的settings.gradle

[plain] view plain copy
  1. rootProject.name = 'C'  
  2. include 'C1'  
  3. includeFlat 'A'  
  4. include 'A:A1'  
一般来说我们是不会在子模块中放入settings.gradle。即使放了C1中的settings.gradle也是不生效的,所以只能在C中的配置中写入。
C1中就可以在build.gradle

[plain] view plain copy
  1. dependencies {  
  2.     compile project(':A:A1')  
  3.     testCompile 'junit:junit:4.12'  
  4. }  

刷新gradle,这里的依赖请注意,因为gradle是默认带有依赖传递的,所以已经在A1引入的jar包在C1中也会默认引入,请注意jar包冲突。
如果有重复的jar包,会以C1中的为准,这种工程非常容易出现重复的jar,请注意jar的依赖。

总结:其实gradle是个很好用的工具,只是现在资料不好找。而且网上误导不全的一大把! 所以学gradle还是老老实实去看官方文档吧。

查看评论

Android工程和Maven工程持续构建

-
  • 1970年01月01日 08:00

Gradle多项目构建

基于以前自己都是直接用Intellij IDEA构建单个Gradle项目,但是在在实际中往往是一个Gradle项目中包含了几个子gradle项目,由于使用Intellij并没有直接构造一个gradle...
  • huangzhichang13
  • huangzhichang13
  • 2016-12-12 17:30:39
  • 1851

Maven多项目依赖配置,多maven项目聚合的实例

本文介绍一个多maven项目的实例demo,展示了聚合、继承、工程依赖、单元测试、多war聚合、cargo发布等场景  一、工程介绍  该项目由5个maven项目组成    t...
  • qq897958555
  • qq897958555
  • 2017-01-17 20:38:27
  • 7557

Gradle 编译多个工程(包含多Library库工程依赖)指导

在实际开发中有很多工程引用到了android-support-v4.jar或者其他的jar包资源; 有时候,在每个library库的libs里都放进android-support-v4.jar 在ec...
  • changemyself
  • changemyself
  • 2014-10-10 13:54:30
  • 29484

springboot+gradle 构建多模块项目

springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经验进行总结与归纳。1.创建项目首先安装java和gradle...
  • FormulaRoom
  • FormulaRoom
  • 2017-04-22 10:19:51
  • 5682

idea+gradle+springboot 多项目

idea+gradle+springboot 多项目创建 by:zrs 创建文件结构 1.创建项目文件根目录文件夹: many-product2.在many-product下创建两个文件(注意:...
  • w546097639
  • w546097639
  • 2018-01-10 17:08:32
  • 301

gradle 工程依赖 打包 配置文件

gradle 工程依赖 打包 配置文件
  • lizhihaoweiwei
  • lizhihaoweiwei
  • 2017-05-19 11:40:34
  • 1033

gradle构建多module的项目

1. 配置子项目   在多模块的项目中,Gradle遵循惯例优于配置 (Convention Over Configuration)原则。 在父项目的根目录下寻找settings.grad...
  • u011871829
  • u011871829
  • 2015-08-20 11:12:30
  • 1696

gradle小技巧--项目依赖库的统一版本管理

日常开发项目中, 有时候会有需要在本地依赖多个库module的情况, 那么我们为了保证所有库支持的系统版本统一. 就需要用到这个技巧了.----- 2018年3月9日 更新 -----#1. **推荐...
  • geekqian
  • geekqian
  • 2017-07-10 11:55:59
  • 962

gradle多工程打包冲突问题

将一个项目由eclipse转android studio时,由于该项目引用lib多达6、7个,一上手就碰到了引用包冲突的问题,问题描述如下UNEXPECTED TOP-LEVEL EXCEPTION:...
  • yide55
  • yide55
  • 2016-03-16 15:37:31
  • 3164
    个人资料
    持之以恒
    等级:
    访问量: 3137
    积分: 424
    排名: 10万+
    文章存档
    最新评论