zoukankan      html  css  js  c++  java
  • 构建工具之

    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')
        )
    }
    

    ---不间断更新。

  • 相关阅读:
    Nginx配置文件nginx.conf详解
    Nginx的内部(进程)模型
    Nginx特点
    Nginx的事件处理机制
    8 个实用的 Bootstrap 3 案例教程
    超高速前端开发工具——Emmet
    3ds MaxVRay全套家装效果图制作典型实例第2版
    Word Excel PPT 2016完全自学教程
    Unity 5.X 3D游戏开发技术详解与典型案例
    C#从入门到精通(第2版)
  • 原文地址:https://www.cnblogs.com/xguo/p/3175377.html
Copyright © 2011-2022 走看看