专栏首页Java技术分享gradle新建工程,多项目依赖,聚合工程
原创

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

gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二。

一、平级项目依赖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 print?
rootProject.name = 'B'  
includeFlat  'A'  

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

B中的build.gradle

dependencies {  
   compile project(':A')  
   testCompile 'junit:junit:4.12'  
}  

请注意

compile project(':A') 

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

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

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

includeFlat  'A','B'  

C中的build.gradle就需要改一下完整的如下

apply plugin: 'war'  
apply plugin: 'java'  
apply plugin: 'eclipse'  
  
repositories {  
    mavenLocal()  
    mavenCentral()  
}  
  
dependencies {  
    compile project(':A')  
    compile project(':B')  
    compile 'org.slf4j:slf4j-api:1.7.21'  
    testCompile 'junit:junit:4.12'  
}  

修改了几个地方 

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

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

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

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

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

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

C

|------C1

|------C2

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

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

C中settings.gradle

rootProject.name = 'C'  
include 'C1','C2'  

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

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

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

假设

A

|----A1

C

|----C1

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

A中的settings.gradle

rootProject.name = 'A'  
include 'A1'  

A1貌似不需要修改啥

C中的settings.gradle

rootProject.name = 'C'  
include 'C1'  
includeFlat 'A'  
include 'A:A1'  

一般来说我们是不会在子模块中放入settings.gradle。即使放了C1中的settings.gradle也是不生效的,所以只能在C中的配置中写入。 C1中就可以在build.gradle

dependencies {  
    compile project(':A:A1')  
    testCompile 'junit:junit:4.12'  
}  

刷新gradle,这里的依赖请注意,因为gradle是默认带有依赖传递的,所以已经在A1引入的jar包在C1中也会默认引入,请注意jar包冲突。

如果有重复的jar包,会以C1中的为准,这种工程非常容易出现重复的jar,请注意jar的依赖。

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Intellij16创建Spring-Mybatis项目创(填)建(坑)记录,解决IDEA下找不到xml文件的问题

    转入Intellij已经有1个月了,编程效率确实比Eclipse快了很多,而且可以直接使用Maven,然后就想写个小项目玩玩,架构搭建完后,想着万事俱备,又不是...

    王二麻子
  • Servlet开发技术,创建,以及Servlet的配置,web.xml的配置

    直接上图,不废话!!! 第一:首先在Eclipse的包资源管理器中,单机鼠标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输入新建...

    别先生
  • 基于jsp+servlet图书管理系统之后台用户信息插入操作

    前奏:   刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长...

    别先生
  • 一脸懵逼学习hadoop之HDFS的java客户端编写

    1:eclipse创建一个项目,然后导入对应的jar包: 鼠标右击项目,点击properties或者alt+enter快捷键--->java build pat...

    别先生
  • 解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variabl

    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME...

    王小雷
  • Eclipse中java获得mysql的查询结果集

    不废话,先上代码,再上解释说明 1 package com.ningmeng; 2 3 import java.sql.*; 4 /** 5 * ...

    别先生
  • Eclipse快捷键

    Eclipse是搞java和scala必不可少的工具,有段时间没有用,快捷键都记不住了,网上搜罗的,特此记录 <常用>Ctrl+1 快速修复(最经典的快捷键,就...

    GavinZhou
  • Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案

    Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误: Description Resource Path Location Type Dy...

    王二麻子
  • Eclipse(Luna)集成Resin4.0+服务器,以及配置参数

    当前,作为比较流行的web服务器,tomcat一直作为首选,然而近几年一个号称最快的Jsp、Servlet服务器——Resin出现了,Resin作为一个新秀We...

    哎_小羊
  • Eclipse中java向数据库中添加数据,更新数据,删除数据

    前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据。 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的...

    别先生

扫码关注云+社区

领取腾讯云代金券