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为项目存放文件夹 ...
随机推荐
- prometheus的平台侧和应用侧结合,实现应用的metrics的抓取
这个细节,迷惑了我一段时间,前面也写过一篇blog,描述过这个问题. 今天看到一种更好的解决方法. 记录一下. prometheus在k8s集群里,抓取应用的metrics. 是需要平台侧和应用侧相互 ...
- Git(二)使用git管理文件版本(TortoiseGit )
一.创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都 ...
- Vue.js开始第一个项目
前端架构之路:使用Vue.js开始第一个项目 Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文通过一个简单的实例开始上手Vue.js开发. 一.技术准备 使用 ...
- 001.Git简介与安装
一 git介绍 1.1 概述 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放 ...
- docker 网络的几种模式
docker 网络分为单机和多机,我们来了解一下docker的单机网络 docker单机网络分为以下几种: 1)bridge NetWork,使用--net=bridge指定,默认设置.2)Host ...
- JavaScript的计时器的工作原理
最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成中文,一来是为了和大家分享,二来是为了加深自 ...
- 【BZOJ 1005】 1005: [HNOI2008]明明的烦恼 (prufer数列+高精度)
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4981 Solved: 1941 Description ...
- Codeforces.666A.Reberland Linguistics(DP)
题目链接 \(Description\) 给定串s,其由一个基本串后加任意多个长度为2或3的后缀串构成,要求基本串长度>4且相邻后缀串不相同.在基本串任意确定的情况下,求所有可能的后缀串. \( ...
- 一键安装LNMP/LAMP
安装步骤:1.使用putty或类似的SSH工具登陆VPS或服务器: 登陆后运行:yum install screen安装 screen screen -S lnmp创建一个名字为lnmp的会话 2. ...
- phpexcel一个bug
大家好! 我想我发现了这个bug. 如果我从文件中图像删除,它加载正常. 如果有图像时候,何时$ objPHPExcel = PHPExcel_IOFactory :: load($ file);我得 ...