Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码。而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代码,因为Gradle已经为我们提供了相应的插件。Gradle 本身自带了许多插件,而对于Gradle没有的插件,可以去github上看看有没有其他人实现,或自己实现。对Java项目而言,Gradle有Java插件,提供了像编译、测试、打包之类的功能。
这里简单介绍一下Java插件。
Java插件为构建项目定义了许多的默认设置,像源文件目录,编译后的文件存放位置等等。如果你是按着默认的规则来的,那么构建脚本将会很简单。当然,如果项目结构不一样,也可以自己指定这些规则。这里暂不介绍,只说一下基本的用法。
1. 使用Java插件
只需要要构建脚本中添加以下代码:
apply plugin: 'java'
定义一个Java项目只需要添加这么一句代码,它会为你添加Java插件,以及一些内置任务。
默认情况下,Gradle会在src/main/java中查找你的源码,在src/test/java中查找你的测试代码,而src/main/resources下的文件都会被打包,src/test/resources下的文件会被包含在classpath中用于测试。所有输出的文件都保存在build目录里,而生成的jar包则是在build/libs里面。
2. 构建项目
Java插件帮你定义了许多任务,这个可以通过前面说的gradle tasks命令来看。当执行gradle build 时,Gradle会执行编译,测试,并且将源文件和资源文件打成jar包。
除了build之外,还有几个常用的任务,如下:
clean:删除build目录和其他构建时生成的文件。
assemble:编译并打包,但不执行单元测试。不过一些其他插件可能会增强这个任务,例如 War 插件会再打出war包。
check:编译并测试代码。其他插件可能会增强这个任务。比如 Code-quality 插件会让这个任务去执行Checkstyle。
3. 外部依赖
repositories { mavenCentral() }
然后再通过下面代码添加依赖:
dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version: '4.+' }
上面的代码中,声明了在编译期,需要依赖 commons-collections,在测试期需要依赖 junit。
4. 自定义项目
sourceCompatibility = 1.5 version = '1.0' jar { manifest { attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version } }
Java插件添加的都是普通任务,所以前面一章介绍的Gradle机制也可以用在这里,比如修改任务的依赖,添加任务行为,甚至重写某个任务等等。下面的例子是修改test任务来添加系统属性:
test { systemProperties 'property': 'value' }
5. 发布JAR包
以下代码是发布JAR包到本地中。发布到maven仓库或jcenter仓库以后再讨论。
uploadArchives { repositories { flatDir { dirs 'repos' } } }
执行gradle uploadArchives即可发布该JAR包。
6. 创建Eclipse项目
apply plugin: 'eclipse'
执行gradle eclipse会生成eclipse项目文件,关于此插件以后再细说。
7. 小结
apply plugin: 'java' apply plugin: 'eclipse' sourceCompatibility = 1.5 version = '1.0' jar { manifest { attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version } } repositories { mavenCentral() } dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version: '4.+' } test { systemProperties 'property': 'value' } uploadArchives { repositories { flatDir { dirs 'repos' } } }
8. 多项目构建
multiproject/ api/ services/webservice/ shared/
首先需要创建一个settings.gradle的配置文件,来声明构建要包含哪些项目。文件的内容如下:
include "shared", "api", "services:webservice", "services:shared"
多项目构建,以后会详谈。
9. 公共配置
subprojects { apply plugin: 'java' apply plugin: 'eclipse-wtp' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:4.11' } version = '1.0' jar { manifest.attributes provider: 'gradle' } }
上面的配置就会子项目都应用了java和eclipse-wtp插件,声明了maven中央仓库,添加了测试期的依赖junit,以及定义了项目版本包和打成的jar包里的manifest文件的属性。
10. 项目依赖
dependencies { compile project(':shared') }
11. 多项目的打包发布
task dist(type: Zip) { dependsOn spiJar from 'src/dist' into('libs') { from spiJar.archivePath from configurations.runtime } } artifacts { archives dist }
这段代码我还没能理解。先记着。
Gradle 笔记——Java构建入门的更多相关文章
- 004_Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它 们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建 ...
- 【Java】在eclipse中使用gradle进行项目构建 入门篇
##Gradle的安装与配置- Gradle 是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具. 系统环境变量中添加gradle 前往官网下载Com ...
- Gradle学习之构建java与web项目
一.使用Gradle的java插件构建Java项目 1)Gradle插件包含了若干个接口定义和已有的任务项,语法结构:apply plugin:'插件名' ,此处我们定义插件 apply plugin ...
- 使用 Gradle 实现 TFS 构建自动化
发布于 2014-07-16 作者 陈 忠岳 感谢微软开放技术有限公司(简称"微软开放技术")发布的构建模板,我们现在便可以在 Team Foundation Server(TFS ...
- java加密算法入门(三)-非对称加密详解
1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...
- java秀发入门到优雅秃头路线导航【教学视频+博客+书籍整理】
目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...
- gradle笔记
gradle笔记 一.基础知识 1.1.groovy语言 Groovy适用于Java虚拟机的一种敏捷的动态语言,他是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言,使用该 ...
- 自学 Java 怎么入门
自学 Java 怎么入门? 595赞同反对,不会显示你的姓名 给你推荐一个写得非常用心的Java基础教程:java-basic | 天码营 这个教程将Java的入门基础知识贯穿在一个实例中,逐 ...
- Hadoop学习笔记(1) ——菜鸟入门
Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...
随机推荐
- 螺旋打印2D数组
//一破题付出血的代价 多思考!public static void offer(int [][]a){ ,right=a.length-,low=,high=a[].length-; while(l ...
- Intellij IDEA自动编译问题
对IDEA的界面很有爱,但是感到他的项目启动速度太慢了.所以查了资料做了优化. 1:开启自动测试 File->setting->compiler 勾选上上面的, 2修改run/de ...
- [HCNA]VLAN配置Access接口
实验目的 1.理解VLAN的应用场景 2.掌握VLAN的基本配置 3.掌握Access接口的配置方法 4.掌握Access接口加入相应VLAN的方法 实验仪器 eNSP 实验原理 如网络拓扑图所示 各 ...
- virtualenvwrapper 的安装和使用
virtualenvwrapper是用来管理virtualenv的扩展包,用着很方便. 1. 安装: #安装virtualenv (sudo) pip install virtualenv #安装vi ...
- python 的字符串驻留机制
我们都知道python中的引用计数机制,相同对象的引用其实都是指向内存中的同一个位置,这个也叫做“python的字符串驻留机制”.其他的就不多说了,自行研究. 重点!!!!!! python的引用计数 ...
- git提交项目常用命令及git分支的用法
1.第一步首先从git托管平台clone项目,我这里就使用idea为例: 填写git的url与存放本地目录名及项目名 2.如果你对项目进行了一些修改,就可以执行git命令,进行提交. 有两种方 ...
- MeshCollider双面化脚本
由于MeshCollider组件可以挂载多个,所以不需要Mesh重新合并了. 除了反转法线还需要反转所有三角面的顺序 脚本如下: using System.Collections; using Sys ...
- FJUT寒假第一周作业浮点数查寻题解
二分强化——浮点数序列查询 TimeLimit:4000MS MemoryLimit:128MB 64-bit integer IO format:%I64d Problem Description ...
- android注解入门 并来自己写一个框架
介绍 这里我带大家来学习一下注解 并且用来写下一个模仿xUtils3 中View框架 此框架 可以省略activity或者fragment的 findViewById 或者设置点击事件的烦恼 我正参加 ...
- Android艺术开发探索第四章——View的工作原理(下)
Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯 ...