使用Gradle快速构建项目

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。

到这里,相信大家都已经知道 Gradle 就是一个构建工具,其主要的目的就是帮咱们构建项目,以下我就通过一个普通的 Java 项目和普通的 web 项目的构建带你走入 Gradle 项目构建.

1 Gradle 搭建Java项目

使用构建工具搭建 Java 项目的主要目的就是其自动的打包和依赖功能.以下就来看下如何使用 Gradle 搭建 Java 项目

1.1 项目创建

IDEA 自带 Gradle 和 Groovy 插件,所以可以直接创建 Gradle 项目.如果是 eclipse 需要安装对应的插件.

IDEA 创建 Gradle Java 项目

  1. file -> new project -> Gradle -> 勾选 Java
  2. 输入: GroupId,ArtifactId,Version
  3. Use local graedle distribution 选择Gradle home
  4. 在 src/main/java下创建包 cn.wolfcode和创建 App.java 类
  5. 在 App 中打印 hello gradle,测试
Java 项目搭建.gif

以上操作咱们就已经使用 Gradle 搭建好了 Java 项目,项目中自动生成了目录和 build.gradle,settings.gradle,接下来咱们就来看下build.gradle

1.2 build.gradle 和项目目录

// plugins 方法,传入闭包{} 作为参数
plugins {
    id 'java'
}
group 'cn.wolfcode.gradle'    // group 方法
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8    // 变量
// repositories  方法,传入闭包
repositories {
    mavenCentral()
}
// dependencies 方法,传入闭包
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

创建完项目之后会自动生成 build.gralde , 里面配置了构建项目的基本脚本.
此脚本用的就是 Groovy 语言书写的,从脚本上看可得知,除了sourceCompatibility 是变量,其他的都是方法调用.
plugins,repositories ,dependencies 传入的是闭包.至于每一项配置是什么意思,期待后面的构建脚本介绍.

从创建出来的项目上咱们可以看到自动生成了一些目录,这些目录结构跟 Maven 构建是相同的.结构如下:


image.png

构建工具构建的Java项目主要目的是可以打包.接下来咱们就来看下如何使用 Gradle 给项目打包

1.3 Gradle 打包 Java 项目

操作非常简单,在 IDEA 右边有一 Gradle ,展开找到 Tasks 任务,展开 Tasks下的 build 直接点击 jar 就可以打包.

image.png

当点击了 jar 之后就会自动打包到项目下的build/libs下,如图


image.png

以上使用 Gradle 构建普通的 Java 项目就已经完成了,接下来咱们就来看下如何使用 Gradle 构建普通的 web 项目

2 Gradle 构建 web 项目

使用 Gradle 构建 web 项目和 构建 Java 项目类似,只在第一步位置勾选 web 即可.

2.1 创建 web 项目

  1. file -> new project -> Gradle -> 勾选 Web
  2. 输入: GroupId,ArtifactId,Version
  3. Use local graedle distribution 选择Gradle home

具体操作如下

web项目搭建.gif

以上操作咱们就已经使用 Gradle 搭建好了 Java 项目,项目中自动生成了目录和 build.gradle,settings.gradle,接下来咱们就来看下build.gradle

2.2 build.gradle 和项目目录

plugins {
    id 'java'
    id 'war'   //比普通的 java 项目多出了一个 war 插件的引入
}

group 'cn.wolfcode.gradle'  
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

以上咱们可以看出,web项目只是在build.gradle 中多引入了war 插件而已.
目录由工具自动生成,如果是手动将 Java 项目改为 web 项目需要自己手动创建目录或者自己书写生成目录的插件.自动生成目录如下.


image.png

以上使用 Gradle 项目咱们就已经构建好了一个简单的 web 项目.而作为一个强大的构建工具,不仅仅是约束了项目结构那么简单,其实还可以打成 war 包和引入插件,这里作为一个简单的 web 项目,咱们就先来打个 war 包吧.

2.2 web 项目打包为 war 包

操作非常简单,在 IDEA 右边有一 Gradle ,展开找到 Tasks 任务,展开 Tasks下的 build 直接点击 war 就可以打包.


image.png

当点击了 war 之后就会自动打包到项目下的build/libs下,如图


image.png

以上使用 Gradle 构建普通的 web 项目就已经完成了.

FS : 你这个骗子! 我的 IDEA 不会自动生成目录,还有错误!!!
ME : 是你太快了,有时太快也是不好滴...
ME : 如果用的是 2016 版,在创建项目时勾选自动创建目录,如下
口 Create directories fo empty content roots automatically

FS : 已经创建了,不想删除再重新创建咋办?
ME : 那就手动创建目录呗 !!! (●>∀<●)ノ♥

ME : 创建完了吗? 完了告诉你,其实还可以自动生成目录. (●’◡’●)ノ♥
ME : 是不是一下子把目录都给记住了. 哈... 哈... 哈...

3 自定义目录生成任务

def createDir(fileName){
    File f = new File(fileName);
    f.mkdirs()
}

task createJavaProjectDir << {
    def dirList = ['src/main/java','src/main/resources','src/test/java','src/test/resources']
    dirList.each {fileName ->
        createDir(fileName)
    }
}

task createWebProjectDir (dependsOn: createJavaProjectDir) << {
    def fileName = 'src/main/webapp'
    createDir(fileName)
}

刷新 Task 列表在other下直接双击 createWebProjectDir 即可生成目录。当然这些可能看不懂,先不管,生成了再说,详情请看任务篇。

想获取更多技术视频,请前往叩丁狼官网:http://www.wolfcode.cn/openClassWeb_listDetail.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容