Gradle借助Groovy语言作为其配置脚本,使得Gradle变的十分强大,几乎是无所不能,我们在掌控这个强大且功能繁多的工具时也比较困难和凌乱,因此本文记录一些使用过程常见的配置,以备不时之需!

Gradle如何包含文件

apply from: "./libraries.gradle"

如何指定build输出目录和版本号

buildDir = "target"
version = '1.0'

在执行Gradle命令时如何指定参数

gradle task -Pprofile=development

相当于在build.gradle中定义了一个变量profile,所以可以在上下文中直接使用profile。

GRADLE和IDEA集成时如何不自动下载依赖源码和JavaDOC

idea {
module {
downloadJavadoc = false
downloadSources = false
}
}

如何解决编译、生成JavaDOC和测试时注释的乱码问题

写在一起:

[compileJava, javadoc, compileTestJava]*.options*.encoding = 'UTF-8'

单独写:

javadoc {
options.encoding = "UTF-8"
}

如何自定义Build后的Classes目录或Resources目录的输出位置

Gradle默认把Classes和Resources分开放,那么把他们放在一起:

sourceSets {
main {
output.resourcesDir = "${buildDir}/classes/main"
}
}

Gradle Jetty配置范例和如何指定webdefault.xml

指定webdefault.xml是为了解决在Windows下静态文件锁定的问题

apply plugin: "jetty"

jettyRun {
contextPath = '/'
reload = 'manual'
webDefaultXml = file('webdefault.xml')
} httpPort = 8080
stopPort = 8011
stopKey = 'jetty6'

如何使用.properties文件

Gradle会自动加载文件 gradle.properties

在根目录新建或打开gradle.properties

spring = 3.2.2.RELEASE
hibernate = 4.1.7.Final

在build.gradle中使用

直接使用

println spring
println hibernate

在字符串中使用

println "spring: $spring"
//或
println "hibernate: ${hibernate}!"

如何限定Task的执行条件

test.onlyIf { !Boolean.getBoolean('skip.tests') }

Task间如何传递变量

//Test任务,注意不是Task
test {
//暴露变量testResult,默认表示单元测试会成功
ext.testResult = true
//...
} task testCompleted <<{
//读取testResult值,如果成功... 如果失败... 想想这个能做什么?
if (test.testResult) {
//...
}
} //在test执行完毕后无论成功或失败都执行testCompleted任务
test.finalizedBy testCompleted

子项目如何定义

打开或新建settings.gradle文件

include 'm1'
include 'm2'

或者 include 'm1', 'm2'

指定子项目的独立Gradle脚本名,以项目名命名,而非build.gradle:

rootProject.children.each { project ->
project.buildFileName = "${project.name}.gradle"
//校验子项目合法性
assert project.projectDir.isDirectory()
assert project.buildFile.isFile()
}

根项目和子项目如何共享配置

allprojects {
apply plugin: 'idea'
repositories {
mavenCentral()
mavenLocal()
}
//…
}

所有子项目共享配置

subprojects {
apply plugin: 'java'
version = '1.0-SNAPSHOT' repositories {
mavenCentral()
}
}

注意

上面的allprojects和subprojects都可以接收到一个project的参数,因为他们是一个Set<Project>

这样可以根据不同的子项目个性化定义配置如:

subprojects { subProject ->
apply plugin: 'idea'
buildDir = "target" if ( ! subProject.name.startsWith( 'm1' ) ) { apply plugin: 'java' configurations {
//...
} dependencies {
//...
}
}
}

而且在任何时候都使用subprojects.each {project -> …} .

或者使用configure来批量指定部分项目的配置

configure(subprojects.findAll {it.name.contains('m1')}) {
apply plugin: 'war'
}

在多项目配置中如何单独指定单个项目配置

project(‘:m1’) {
apply plugin: 'war'
dependencies {
//...
}
}

':m1' 项目名称。

子项目间如何依赖

dependencies {
compile(
project(':m1')
)
}

---不间断更新。

构建工具之 - Gradle一般使用常见问答的更多相关文章

  1. Android Gradle 构建工具(Android Gradle Build Tools)是什么?

    转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...

  2. 【项目构建工具】 Gradle笔记1

    一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XM ...

  3. 项目构建工具之gradle

    groovy的高级特性: 可选的类型定义 def.assert.括号是可选的.字符串 .集合API.闭包: 构建脚本 项目project : group name version apply depe ...

  4. 【项目构建工具】 Gradle笔记2

    一.Gradle执行流程 1.Gradle的执行流程(生命周期)主要是三个阶段: 初始化阶段:解析整个工程中所有Project,构建所有的Project对应的project对象 配置阶段:解析所有的p ...

  5. 一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5

    译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build To ...

  6. Java项目工程化之项目构建工具Maven

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  7. 学习笔记——Maven实战(六)Gradle,构建工具的未来?

    Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...

  8. Java构建工具:如何用Maven,Gradle和Ant+Ivy进行依赖管理

    原文来自:https://zeroturnaround.com/rebellabs/java-build-tools-how-dependency-management-works-with-mave ...

  9. 构建工具Gradle安装和简单使用

    1. 安装 到gradle官网下载页 https://gradle.org/gradle-download/ 下载gradle,其中“完全版(Complete distribution)”包含除了运行 ...

随机推荐

  1. linux设备驱动归纳总结(三):4.ioctl的实现【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59419.html linux设备驱动归纳总结(三):4.ioctl的实现 一.ioctl的简介: 虽 ...

  2. 【python cookbook】【字符串与文本】8.编写多行模式的正则表达式

    问题:用正则表达式对一段文本块做匹配,但是希望在进行匹配时能够跨越多行 解决方案: 1.正则表达式添加对换行符的支持: 2.re.compile()函数一个有用的标记-re.DOTALL使得正则表达式 ...

  3. html5+php实现文件的断点续传ajax异步上传

    html5+php实现文件的断点续传ajax异步上传 准备知识:断点续传,既然有断,那就应该有文件分割的过程,一段一段的传.以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割, ...

  4. 点评js异步加载的4种方式

    主要介绍了点评js异步加载的4种方式,帮助大家更全面的了解js异步加载方式,感兴趣的小伙伴们可以参考一下 js异步加载的4种方式,点评开始. <!DOCTYPE html> <htm ...

  5. MyBatis的Dao层注入SqlSession

    有点坑爹,以前没用过Mybatis,最近才用,而且一直用Mybatis推荐的接口映射的方式,但是今天有人告诉我接口方式用得少,大多还是采用从配置文件里面读sql的方式,当然接口也是类似的,都是利用ma ...

  6. html5 canvas 笔记二(添加样式和颜色)

    色彩 Colors fillStyle = color 设置图形的填充颜色. strokeStyle = color 设置图形轮廓的颜色. 透明度 Transparency globalAlpha = ...

  7. nohup DEMO

    nohup,顾名思义:挂起免疫. nohup命令可以防止当你退出系统时,在后台运行的进程被终止.它能让你运行的命令或脚本在你退出系统后继续在后台运行. nohup命令不能自动的将任务放在后台运行,所以 ...

  8. SDUT 2877:angry_birds_again_and_again

    angry_birds_again_and_again Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 The problems ...

  9. JVM的classloader(转)

    Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某个类的时候,要用类加载器载入内存.    这四个类加载器分别为:Bootstrap ClassLoader.Extension Class ...

  10. 2016年10月30日 星期日 --出埃及记 Exodus 19:15

    2016年10月30日 星期日 --出埃及记 Exodus 19:15 Then he said to the people, "Prepare yourselves for the thi ...