gradle新建工程,多项目依赖,聚合工程
感谢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
- 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还是老老实实去看官方文档吧。
另:如果让我在选一次,我是不会选择gradle的!!!!! 因为他的tomcat插件太难用了,而且国外一般都是linux开发环境,一堆命令行,在我们这种用习惯eclipse的人来说太不友好了。我是出现tomcat插件在eclipse中永远8%的问题了的,在命令行就可以启动。玛德,这样起了断点怎么调试,简直蛋疼。最后还是引入了spring boot才把调试问题搞定,引入了spring boot之后又要把web.xml去掉,解决一个问题就要连锁反应,这个就不太好了。所以差评!!差评!!差评!!
不是gradle不强大,而且我太low。
gradle新建工程,多项目依赖,聚合工程的更多相关文章
- idea 多模块项目依赖父工程class找不到问题
比如,我们有这么个过程,项目结构如下: a --b --c a是总结点,b是子节点,c是父节点 b依赖父节点class,通过maven构建时通常我们会在子节点中添加父节点依赖,如: <depen ...
- 一gradle创建SSM项目——依赖包
build.gradle compile:编译时必须. runtime:运行时必须,包括编译时. testCompile:测试编译时必须. testRuntime:测试运行时必须,包括编译时. 注:此 ...
- IDEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在问题处理
公司新项目需使用java技术栈,便使用IDEA搭建了一个多SpringBoot项目的聚合工程,因为初次使用,遇到了很多问题,maven打包时各种报错,在网上查了好多终于解决了,为巩固记忆,特作此记录. ...
- Maven 聚合工程的创建
简单场景举例 聚合工程创建示例 说明: 创建 Maven Project:表示创建 maven 项目,new Project 方式创建 创建 Maven Module:表示创建 maven 项目,ne ...
- 用gradle管理android项目出现的问题以及解决方法
1.项目结构 最好是全部在root 项目配置 一个settings.gradle 一个build.gradle 2.多项目依赖 http://www.gradle.org/docs/current/u ...
- Gradle 翻译 build dependencies 依赖 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...
- 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
随机推荐
- SQL Server 2
一.创建数据表 1.连接服务器: 2.右击“表”节点,选择“新建表”,即: 3.在弹出的“表设计器”中,输入表的列名.选择的数据类型及是否允许为空,即: 二.导入数据表 1.右击表名,弹出菜单,选择“ ...
- Nginx+redis的Asp.net
基于Nginx+redis的Asp.net站点搭建 剧情介绍 在传统的信息系统(比如小规模的ERP\MES系统),往往只是进行简单的应用服务器和数据库服务器的分布式部署,以此来提高应用系统的负载能 ...
- 记录一下SparkStreaming中因为使用redis做数据验证而导致数据结果不对的问题
业务背景: 需要通过redis判断当前用户是否是新用户.当出现新用户后,会将该用户放入到redis中,以标明该用户已不是新用户啦. 出现问题: 发现入库时,并没有新用户入库,但我看了数据了,确实应该是 ...
- spark优化之数据结构(减少内存)
官网是这么说的: The first way to reduce memory consumption is to avoid the Java features that add overhead, ...
- mybatis中的一点优化问题(数据库连接分开,别名,日志打印)
一:数据的链接 1.目录 2.新建一个db.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3308/mybati ...
- Swift map filter reduce 使用指南
转载:https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/ Using map, filter or reduce to ope ...
- Linux shell 脚本小记2
.从文件读取 while read line do echo "line=$line" done < file.txt .将字符串转换为数组,并进行遍历 str=" ...
- iOS键盘类型最全
一.键盘风格 UIKit框架支持8种风格键盘. typedef enum { UIKeyboardTypeDefault, // 默认键盘:支持所有字符 UIKeyboa ...
- 喵哈哈村的魔法考试 Round #7 (Div.2) 题解
喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场. 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为 ...
- HDU 5909 Tree Cutting 动态规划 快速沃尔什变换
Tree Cutting 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5909 Description Byteasar has a tree T ...