构建工具之 - Gradle一般使用常见问答
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一般使用常见问答的更多相关文章
- Android Gradle 构建工具(Android Gradle Build Tools)是什么?
转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...
- 【项目构建工具】 Gradle笔记1
一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XM ...
- 项目构建工具之gradle
groovy的高级特性: 可选的类型定义 def.assert.括号是可选的.字符串 .集合API.闭包: 构建脚本 项目project : group name version apply depe ...
- 【项目构建工具】 Gradle笔记2
一.Gradle执行流程 1.Gradle的执行流程(生命周期)主要是三个阶段: 初始化阶段:解析整个工程中所有Project,构建所有的Project对应的project对象 配置阶段:解析所有的p ...
- 一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5
译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build To ...
- Java项目工程化之项目构建工具Maven
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 学习笔记——Maven实战(六)Gradle,构建工具的未来?
Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...
- Java构建工具:如何用Maven,Gradle和Ant+Ivy进行依赖管理
原文来自:https://zeroturnaround.com/rebellabs/java-build-tools-how-dependency-management-works-with-mave ...
- 构建工具Gradle安装和简单使用
1. 安装 到gradle官网下载页 https://gradle.org/gradle-download/ 下载gradle,其中“完全版(Complete distribution)”包含除了运行 ...
随机推荐
- 160907、CSS 预处理器-Less
CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...
- uboot启动参数
bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0bootdelay=2baudrate=115200ethaddr=08:00:3 ...
- DataGuard主备归档存在gap的处理办法
DataGuard主备之间可能由于网络等原因,造成备库和主库之间的归档日志不一致,这样就产生了gap. 解决gap的步骤: 1.在备库获得gap的详细信息 2.将需要的归档日志从主库拷贝到备库 3.备 ...
- [Ogre][地形][原创]基于OgreTerrain的地形实现
需要用到的外部图片资源: 在ogre调用时需要多用到的几个外部dll: OgreTerrain_d.dll 需要添加头文件 #include "Ogre\Ogre.h"#inclu ...
- 【转】学习总结--Cookie & Session总结
转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理 1)什么是状态管理? 将浏览器与web服务器之间多次交互过程 ...
- 20150626_Andriod_02_ListView2_列表与详细信息
android listview 参考地址: http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html http://xy ...
- poj1987 Distance Statistics
普通dfs访问每个点对的复杂度是O(n^2)的,显然会超时. 考虑访问到当前子树的根节点时,统计所有经过根的点(u, v)满足: dist(u) + dist(v) <= maxd,并且 bel ...
- jquery的ajax向ashx传值,中文乱码问题
从网上查找了很多资料: 有在配置文件里面加如下配置 <globalization responseEncoding="utf-8" requestEncoding=" ...
- Mysql-学习笔记(==》连接查询_高级查询五)
CREATE TABLE t( tid INT UNSIGNED NOT NULL AUTO_INCREMENT, tname VARCHAR(30), PRIMARY KEY (tid))ENGIN ...
- C语言100个经典算法
POJ上做做ACM的题 语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后 ...