Gradle用户指南翻译链接

Gradle版本2.7

2015.09.14发布了Gradle版本2.7, 后续发布频率将更快,目标是每4-6周发布一个新版本。

重要:Gradle 2.6生成的wrapper性能很差

        如果用Gradle 2.6生成Gradle wrapper,强烈建议用Gradle 2.7来生成gradle-wrapper.jar。2.6版本中新增的校验和验证功能会导致Gradle wrapper性能严重下降,这个问题会影响到通过wrapper来执行gradle时的启动时长,已经在2.7中修复。

       另外,这只会影响由2.6生成的wrapper。如果使用2.6之前的版本生成的wrapper,则不受影响。

2.7版本中引入的新特性

选择HTTP认证方式(incubating特性)

当通过HTTP/HTTPS向Maven或Ivy仓库认证时,Gradle尝试使用所有支持的认证方式来连接(NTLM, Kerberos, Digest, Basic). 2.7版本可以选择应当使用的认证方式,其他不需要的认证方式不再需要。用新的authentication元素来指定认证方式。例如,配置仅适用digest认证的库:

repositories {    
    maven {        
        url 'https://repo.mycompany.com/maven2'        
        credentials {            
            username 'user'            
            password 'password'        
        }        
        authentication {            
            digest(DigestAuthentication)        
        }    
    }
}

当前版本仅有BasicAuthentication 和DigestAuthentication 方式可以明确配置,且只用于HTTP传输。

支持抢先式HTTP认证(incubating特性)

基于前面"选择HTTP认证方式", Gradle现在可对配置了BasicAuthentication认证的仓库抢先发送HTTP认证方式.

Gradle只有在server响应一个authentication challenge (401-UNAUTHORIZED)时才提交HTTP credentials。这可避免在不需要时发送未加密的credentials。但在某些情况下,server会回一个不同的响应来请求需要认证的资源(例如GitHub会返回一个404-NOT-FOUND),这会使依赖解析失败。

为了解决这个问题,可以先将credentials发送给server。当一个repository明确配置使用BasicAuthentication方式时,Gradle 将对每个请求都抢先发送credentials:

authentication {    
    basic(BasicAuthentication) // 使能抢先认证
}

Gradle TestKit在一个隔离环境中执行测试(incubating特性)

 Gradle前面的版本中引入了Gradle TestKit 用于Gradle插件的功能测试。

这个版本中在已有的TestKit feature set基础上, 增加了Test execution isolation。测试执行现在可在一个隔离的"工作空间"执行,以便防止测试build会继承当前用户的环境配置。

TestKit使用专用的,可重用的Gradle daemon进程;在执行完一个build的所有功能测试后,这些daemon进程就结束掉。

Play应用程序显示build失败消息当以--continuous运行时(incubating特性)

Gradle Play plugin 初次发布允许以持续build方式来开发Play应用程序,当重新build时可自动重新加载资源和应用class。 但是当出现一次build失败时,Gradle只是简单地停止运行应用程序。

当运行Gradle 2.7时,当build失败时将重新加载Play应用程序, 在浏览器中显示所有的build失败消息。

支持Play 2.4(incubating特性)

在这个版本中,'play'插件已更新支持Play 2.4版本,并支持新的injected routes generator。

可以配置routes compiler来使用injected routes generator, 通过对play component使用一个新的配置选项 :

model {    
    components {        
        play {            
            injectedRoutesGenerator = true        
        }    
    }
}

Gradle缺省将使用static routes generator。

Managed model improvements(incubating特性)

管理类型现在支持所有基本类型 (booleanbytecharshortintlongfloat and double)的properties, 及其封装类型(分别是BooleanByteCharacterShortIntegerLongFloat and Double)的properties。基本类型的boolean properties可以用经典的getter或者is-风格的getter来声明。例如:

@Managed
interface ManagedType {    
    boolean getEnabled()    
    void setEnabled(boolean enabled)    
    
    boolean isActive()    
    void setActive(boolean active)    
    
    int getCount()    
    void setCount(int value)
}

boolean property可以有一个get以及一个is getter。

JVM组件的依赖管理(incubating特性)

这个版本对JVM组件引入新的依赖管理特性,这是朝着full variant-aware dependency resolution的一个重要步骤。这个特性是建立在new rule based model configuration 基础上,需要使用新的jvm-component插件:

plugins {    
    id 'jvm-component'    
    id 'java-lang'
}

定义的JvmLibrarySpec 可以声明API依赖于任何其他本地生成的库。这包括在同一个Gradle项目中其他的JvmLibrarySpec 实例,以及在一个多项目的build中其他项目中声明的JvmLibrarySpec组件。

model {    
    components {        
        main(JvmLibrarySpec) {            
            targetPlatform 'java7'            
            targetPlatform 'java8'            
            sources {                
                java {                    
                    dependencies {                        
                        library 'commons'                    
                    }                
                }            
            }        
        }        
        commons(JvmLibrarySpec) {            
            targetPlatform 'java7'        
        }    
    }
}

对配置生成多个不同平台的JvmLibrarySpec来说,Gradle将根据依赖的库来生成并解析一个兼容的二进制variant。在上面例子中,Gradle将生成'main'库组件的两个JAR文件,一个使用JDK 1.7,另一个使用JDK 1.8。这两个编译都依赖于JDK 1.7 Jar variant 的'commons'库。

Gradle版本2.6

2015.08.10发布了Gradle版本2.6,在Gradle 2.6版本中,容器与Servers称为一等公民。Linkedin宣布开源其Gradle Hadoop toolchain, 这超越了Gradle之前经典的编译平台的工作。后续将发布突破性的SaaS平台Gradle.com, 业界对Grdle人才需求量也日益增大,将推出Gradle认证体系。

Linkedin, Google Android, Twitter都在大力支持Gradle。

Gradle工具已经不只是编译和依赖管理工具,它就像是瑞士陆军军刀一样,每个Android开发人员都需要学好使用它。使用Cucumber和Appium构建自动化UI测试套件,并与持续集成结合。

用户指南翻译

第1-10章的翻译,不含第9章,http://pkaq.github.io/gradledoc/docs/userguide/userguide.html   

第9,11-39章的翻译链接:http://blog.csdn.net/maosidiaoxian/


最好的一本介绍Gradle的书籍:Gradle in Action, 2014年出版。

                        Gradle用户指南翻译链接

其他参考资料:

[1] http://gradle.org/books/

[2] https://docs.gradle.org/2.6/release-notes

你可能感兴趣的:(gradle,Gradle用户指南)