感谢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 plaincopy
  1. rootProject.name = 'B'
  2. includeFlat  'A'

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

B中的build.gradle

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

请注意

[plain] view plaincopy
  1. compile project(':A')

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

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

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

[plain] view plaincopy
  1. includeFlat  'A','B'

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

[plain] view plaincopy
  1. apply plugin: 'war'
  2. apply plugin: 'java'
  3. apply plugin: 'eclipse'
  4. repositories {
  5. mavenLocal()
  6. mavenCentral()
  7. }
  8. dependencies {
  9. compile project(':A')
  10. compile project(':B')
  11. compile 'org.slf4j:slf4j-api:1.7.21'
  12. testCompile 'junit:junit:4.12'
  13. }

修改了几个地方

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

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

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

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

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

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

C

|------C1

|------C2

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

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

C中settings.gradle

[plain] view plaincopy
  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 plaincopy
  1. rootProject.name = 'A'
  2. include 'A1'

A1貌似不需要修改啥

C中的settings.gradle

[plain] view plaincopy
  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 plaincopy
  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还是老老实实去看官方文档吧。

另:如果让我在选一次,我是不会选择gradle的!!!!! 因为他的tomcat插件太难用了,而且国外一般都是linux开发环境,一堆命令行,在我们这种用习惯eclipse的人来说太不友好了。我是出现tomcat插件在eclipse中永远8%的问题了的,在命令行就可以启动。玛德,这样起了断点怎么调试,简直蛋疼。最后还是引入了spring boot才把调试问题搞定,引入了spring boot之后又要把web.xml去掉,解决一个问题就要连锁反应,这个就不太好了。所以差评!!差评!!差评!!

不是gradle不强大,而且我太low。

gradle新建工程,多项目依赖,聚合工程相关推荐

  1. java idea 模块_idea 多模块项目依赖父工程class找不到问题的方法

    比如,我们有这么个过程,项目结构如下: a --b --c a是总结点,b是子节点,c是父节点 b依赖父节点class,通过maven构建时通常我们会在子节点中添加父节点依赖,如: com.xxx c ...

  2. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  3. maven聚合工程里子工程导入依赖出现unknown错误

    错误截图: 错误分析: 在创建maven聚合工程时,在父工程里进行了版本统一管理 但是子工程里导入依赖发现版本号显示为unknown! 百度很多说没写,考虑到只是部分依赖出现这种情况,排除了这一可能 ...

  4. Idea如何导入eclipse的聚合工程的项目

    前言: 由于工作的原因,很可能原来用eclipse建的聚合工程的项目,需要导入到idea里,那么idea是如何操作的呢,对于不是很熟悉Idea的小伙伴们可能会一脸懵逼,这篇博客就把操作流程梳理一番. ...

  5. 解决导入的maven聚合工程中子模块项目不显示

    导入的maven聚合工程中没有子模块,最主要的原因是没有选择正确的导入方式.应该选择maven projects来导入.

  6. Idea之使用Gradle开发Java项目

    IDEA拥有大量的JAVA开发者拥护,相比于开源的eclipse,IDEA拥有更简洁直观的界面,拥有更强大的自动补全功能,号称能"一路敲回车完成编码".如果把IDEA和eclips ...

  7. spring boot创建多模块聚合工程

    环境:java1.8,idea 聚合工程优势: 1.统一maven操作.可以在一个maven工程管理多个子工程(每个子工程可单独打包,重启,调试.也可通过聚合工程一起管理). 2.统一管理依赖版本.可 ...

  8. 使用IDEA基于Maven搭建多模块聚合工程(springmvc+spring+mybatis整合)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 终于有时间搞java了,今天使用IDEA基于maven搭建了多模块聚合工程,经过了多番尝试, ...

  9. Android Studio目录结构和Gradle构建Android项目

    一,Android Studio的目录结构和工程项目介绍 二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运 ...

最新文章

  1. Django(part44)--制作分页
  2. linux可配置哪些服务,linux操作系统下服务配置
  3. HBase实践案例:车联网监控系统
  4. atitit.判断时间重叠方法总结 java c++ c#.net js php
  5. 360隐私保护器直指腾讯QQ 360真的发飙了,百度旁观!
  6. 测向交叉定位matlab,一种三维多站测向交叉定位算法
  7. 夺命雷公狗—玩转SEO---52---浅谈人工智能在SEO中的应用之机器学习,内链布局篇...
  8. Android 手机获取加速度传感器加速度数据并自定义采样频率
  9. 【公众号】公众号网页跳转关注微信公众号
  10. 百度图片推广广告位怎么做,图片广告位如何投放
  11. “技能成就梦想 创新促进发展”2016年成德绵创新改革试验区第二届高技能人才交
  12. 【OpenCV】cv::Mat位深和通道,CV_8UC1等
  13. 暖芯迦推出可编程神经调控平台芯片-元神ENS001
  14. git入门----repo的基本认识
  15. 理解CentOS的Endpoint仓库是什么
  16. HTML-12:超链接锚点定位
  17. 一款免杀php大马的解密与去后门
  18. STM32 USB无法连接电脑
  19. PPT:智能制造工厂三年规划
  20. centos7.4安装指导书--基于华为服务器

热门文章

  1. Struts2 学习系列 (3) 跳转类型与通配符映射
  2. html5日期转long
  3. JAVA逆向反混淆-追查Burpsuite的破解原理(转)
  4. HTML特殊字符过滤器
  5. linux 下 ifcfg-eth0 配置
  6. [转|整理]翻译:使用.net3.5的缓存池和SocketAsyncEventArgs类创建socket服务器
  7. 中国汽车涂料发展的初期
  8. python 中cookie_详解Python中的Cookie模块使用
  9. 零基础入门学习Python,这13个Python惯用小技巧一定要收藏
  10. mysql半连接_mysql表的半连接,反连接导致的mysql性能优化剖析