构建 工具 gradle 通常 使用 常见 问答 栏目 Gradle 繁體版
原文   原文链接

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

Gradle如何包含文件

apply from: "./libraries.gradle"

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

buildDir = "target"
version = '1.0'

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

gradle task -Pprofile=development

至关于在build.gradle中定义了一个变量profile,因此能够在上下文中直接使用profile。web

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

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

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

写在一块儿:spring

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

单独写:app

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

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

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

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

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

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

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中使用测试

直接使用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')
    )
}

---不间断更新。

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公众号
   欢迎关注本站公众号,获取更多信息