004_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
- }
这段代码我还没能理解。先记着。
本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/40656311
004_Gradle 笔记——Java构建入门的更多相关文章
- Gradle 笔记——Java构建入门
Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码.而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代 ...
- java加密算法入门(三)-非对称加密详解
1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...
- 自学 Java 怎么入门
自学 Java 怎么入门? 595赞同反对,不会显示你的姓名 给你推荐一个写得非常用心的Java基础教程:java-basic | 天码营 这个教程将Java的入门基础知识贯穿在一个实例中,逐 ...
- Hadoop学习笔记(1) ——菜鸟入门
Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...
- java加密算法入门(二)-对称加密详解
1.简单介绍 什么是对称加密算法? 对称加密算法即,加密和解密使用相同密钥的算法. 优缺点: 优点:算法公开.计算量小.加密速度快.加密效率高. 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证 ...
- Java快速入门-02-基础篇
Java快速入门-02-基础篇 上一篇应该已经让0基础的人对 Java 有了一些了解,接一篇更进一步 使用 Eclipse 快捷键 这个老师一般都经常提,但是自己不容易记住,慢慢熟练 快捷键 快捷键作 ...
- Java快速入门-01-基础篇
Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA 本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻 ...
- java秀发入门到优雅秃头路线导航【教学视频+博客+书籍整理】
目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...
- java虚拟机入门(一)-jvm基础
转行学java之前,总是听着大佬们说着java像个渣男一样可以跨平台,一次编译到处运行,瞬间,我就坚定了学java的信念,哎呀妈呀,得劲.真的学java之后,好像渣男也不是那么好学的,尤其这货的必杀技 ...
随机推荐
- list+map
通常读取数据库表中的一条记录后,可以存储于Hashmap变量中:若要读取多条记录,则依次读取每个记录时,先用Hashmap变量存取,然后将Hashmap加到ArrayList变量中. 注意: 每次读取 ...
- pbuilder编译构建工具分析
1. 简介 pbuilder(personal Debian package builder)是ubuntu环境下维护debian包的专业工具,能够为每个deb包创建纯净的编译构建环境,自动解析和安装 ...
- 获取和验证Windows AD域的用户信息
1.获取windows AD域用户信息,首先需要有一个ad域管理员权限的账号,用这个账号连接ad域,获取所有域用户信息 用LdapContext,它继承自DirContext public Objec ...
- [洛谷P4503][CTSC2014]企鹅QQ
题目大意:给你$n(n\leqslant3\times10^4)$个长度为$l(l\leqslant200)$的字符串,要你求出有多少对字符串是相似的,相似的定义是两个字符串只在一位上不同. 题解:可 ...
- OpenFlow 消息
消息类型 OpenFlow 的消息共分为三类: Controller-to-Switch 顾名思义,此类消息是由控制器主动发出 Features 用于获取交换机特性 Configuration 用于配 ...
- 洛谷 P2123 皇后游戏 解题报告
P2123 皇后游戏 题意: 给定\(T\)组长为\(n\)的\(A\),\(B\)数组和\(C\)的计算方法,求一种排列方法,使最大的\(C\)最小化. 数据范围: \(1 \le T \le 10 ...
- 使用Ajax内容签名,减少流量浪费
前端UI界面用Ajax获取数据内容的时候,一般是直接获取内容数据并填充,不管内容有无变化,不管数据量多大,都是直接重新加载数据,例如定时刷新公告等. 今天在浏览器控制台调试的时候,发现动态刷新内容,其 ...
- oracle的lpad()函数
lpad函数 lpad函数是Oracle数据库函数,lpad函数从左边对字符串使用指定的字符进行填充.从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思. ...
- 链接错误 multiply defined (by misc_1.o and misc.o).
http://www.stmcu.org/module/forum/thread-286128-1-1.html *** Using Compiler 'V5.06 (build 20)', fold ...
- springboot集成Guava缓存
很久没有写博客了,这段时间一直忙于看论文,写论文,简直头大,感觉还是做项目比较舒服,呵呵,闲话不多说,今天学习了下Guava缓存,这跟Redis类似的,但是适用的场景不一样,学习下吧.今天我们主要是s ...