Gradle 教程:第二部分,JAVA PROJECTS【翻译】
原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-2-java-projects/
在这部分的教学中,我们会学习如何使用Gradle去编译,构建,测试你的JAVA项目。我们将会把关注的焦点放在Gradle的内部机制上,而不是java代码,所以我将使用非常简单的java工程来帮助我们理解Gradle的概念。
在阅读本文前,请确保您已经阅读了第一部分。
Gradle:工程(Project),任务(Tasks) and 插件(Plugin)
我们先来炒个回锅肉,回想一下前面一节我们所讲的一些东西,并且在加一些本节所需要的新知识。
总的来说,gradle编译进程在开始编译的时候,总是会去寻找build.gradle文件,build.gradle是Gradle的核心文件,该文件包含了Gradle需要执行的各种任务task,和指令去指导Gradle去做的事情。任务task可以理解为编译,测试,编译jar,部署等事件,只不过在Gradle里面这些事件可以被算便打乱,而在一般的IDE里面,却只能是编译 –》构建 –-》部署 – 》发布的过程。所以Gradle因为任务的概念,使得程序的构建可以多样化,一次执行发布多个包这样非常灵活的控制。
但是我们也没有必要手动的为一次构建过程详细的指定每一个任务,因为在Gradle中有一个叫做Plugin(插件)的东西帮我们做了这些事情。通过使用插件,我们可以非常简单的指定任务(但是这里需要编写插件所提供的约定)。
那么插件是什么意思呢?这里的插件和我们使用软件时增加插件的那个意思基本一致:一个插件(Plugin)就是我们可以用来增加Gradle的能力的约定机制。按照Gradle的约定机制所定义的插件,可以让Gradle知道如何执行任务。
本节我们不打算关注如何写一个插件。我们只是使用一些非常厉害强大的Gradle 插件来帮助我们做一些事情。这些插件已经提供了一些我们可以直接使用的任务。
不着急额,来与我多碰一杯,事情就能够一帆风顺了.
JAVA plugin
让我们先从对于java程序猿来说最终要的插件开始说起:java plugin 。这个插件为项目已经定义如下的能力:
1.编译
2.测试
3.打包
逻辑上来说,这估计就是我们java项目所需要的一切功能了。其中打包通常意义就是打包一个jar文件。
所有的你需要在项目中使用的插件都需要增加在build.gradle文件中形式如下:
apply plugin:<plugin-name>
现在,我们需要使用java插件,所以我们在build.gradle中增加:
apply plugin: “java”
为了更好的理解上面这句话是什么意思,我们来举个实例。
在本地电脑上创建一个文件夹:example2 ,在example2文件家里创建build.gradle,并在文件中加上
apply plugin: “java”
如图
然后再cmd里面执行
gradle tasks
应该就会看到如下结果
可以看到其中就有java plugin为我们提供的各种任务,比如:
build(编译)
clean(清除)
assemble(集成)
这些任务甚至可能会依赖其他的任务,具体信息可以参考官方参考依赖图。
使用java plugin编译的简单的JAVA 项目
当你成功执行上面的代码之后,你再次打开example2文件,会看到下面会多生产一些文件,现在的文件夹下:
虽然java plugin已经提供了 build,clean,assemble等任务,我们要如何调用呢?当然出了CMD的方式,还可以集成在build.gradle文件中。
Gradle 教程:第二部分,JAVA PROJECTS【翻译】的更多相关文章
- Spring Data JPA教程, 第二部分: CRUD(翻译)
我的Spring Data Jpa教程的第一部分描述了,如何配置Spring Data JPA,本博文进一步描述怎样使用Spring Data JPA创建一个简单的CRUD应用.该应用要求如下: pe ...
- 【转载】Gradle学习 第二章:概述
转载地址:http://ask.android-studio.org/?/article/6 Here is a list of some of Gradle's features.<翻译> ...
- 学习opencv中文版教程——第二章
学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(二) controller
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第二十一章-授予身份与切换身份(二) 1.回顾 ...
- 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某 ...
- EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念
目录 1. 使用Anypoint Studio开发 2. Mule ESB Application Structure - Mule ESB应用程序结构 3. Mule ESB Application ...
- Spring cloud系列教程第二篇:支付项目父工程图文搭建
Spring cloud系列教程第二篇:支付项目父工程图文搭建 在讲解spring cloud相关的技术的时候,咱们就模拟订单支付这个流程来讲讲 在这个支付模块微服务搭建过程中,上面的这些技术,都会融 ...
- [ABP教程]第二章 图书列表页面
Web应用程序开发教程 - 第二章: 图书列表页面 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开 ...
- 虚拟机--第二章java内存区域与内存溢出异常--(抄书)
这是本人阅读周志明老师的<深入理解Java虚拟机>第二版抄写的,有很多省略,不适合直接阅读,需要阅读请出门左转淘宝,右转京东,支持周老师(侵权请联系删除) 第二章java内存区域与内存溢出 ...
- Top 20 Java Libries Used by Github's Most Popular Java Projects
Top 20 Java Libries Used by Github's Most Popular Java Projects:
随机推荐
- springboot jpa mongodb 整合mysql Field in required a bean of type that could not be found Failed to load ApplicationContext
1.完整报错 *************************** APPLICATION FAILED TO START *************************** Descripti ...
- Java技术列表
完整的java技术列表,可以在oracle官网找到: https://www.oracle.com/technetwork/java/javaee/tech/index.html JSR: Java ...
- DataSet强类型、TableAdapter的使用
简答使用可以看https://www.cnblogs.com/namejr/p/10411920.html中的"先来简单介绍dataset和datatable" DataSet强类 ...
- C语言关于++i,--i,i++,i--
++i 和--i 指的是先进行运算,再进行调用(运算符在前) i++和i--指的是先进行调用,再进行运算(运算符在后) 举例: int k,i=5;k=i++;//k得到5i=5;k=++i;//k得 ...
- php返回数据格式
PHP返回HTML代码: header('Content-type:text/html; charset=utf-8'); PHP返回xml代码:header('content-type: t ...
- django权限二(多级菜单的设计以及展示)
多级权限菜单设计级标题栏 我们现在只有数据展示,要进入其他url还需要手动的输入路径,非常的麻烦,所以我们要设计 一个导航栏以及侧边多级菜单栏,这个展示是通过stark组件的设计的增删改查页面,而 每 ...
- zabbix监控nginx mysql 服务添加
[root@test2 ~]# rpm -ivh nginx-1.8.0-1.el7.ngx.x86_64.rpm [root@test2 ~]# cd /etc/nginx/ [root@test2 ...
- 问题解决Determine IP information for eth0.. no link present check cable
网上方法都没有解决:简单粗暴编辑里还原了默认设置OK了 网上方法1 一般解决办法: 第一步: 到/etc/sysconfig/network-scripts/ifcfg-eth<n>/et ...
- yii1的后台分页和列表
控制器: public function actionIndex(){ $model = new Cases('search'); $model->unsetAttributes(); // c ...
- Vue.js-----轻量高效的MVVM框架(十二、组件动态切换)
在写html的过程中,我们经常会遇到要写tabs的切换,类似于这样: 在vue中,我们也有自己的组件和属性来实现这样的效果,这个东西我们叫做动态组件. html: <h3>动态组件< ...