gradle-5.6.4-all 百度网盘下载CSDN快速下载

Gradle 5.6.4 发布

Gradle团队很兴奋地宣布Gradle 5.6.4。

此版本的特点是提高Groovy编译速度的改进,的新插件Java测试夹具和更好地管理插件版本在多项目构建中。

这是Gradle 5.x的最终次要版本。还有许多其他较小的功能和改进,所以请查看下面的完整版本说明。

此版本还包含一个重要的安全修复影响部分用户。

下载连接:点击进入快速下载

升级说明

通过更新您的包装器,切换您的构建以使用Gradle 5.6.4:

./gradlew wrapper --gradle-version=5.6.4

参见Gradle 5.x升级指南了解升级到Gradle 5.6.4时的弃用、重大变更和其他注意事项。

注意:Gradle 5.6已经有了四补丁发布修复几个问题。我们建议使用最新的补丁版本。

更快的Groovy编译

Gradle 5.6包含了两个加速Groovy编译的新特性。

Groovy编译避免

Gradle现在支持Groovy的实验性编译避免。

如果没有会影响编译输出的更改,这可以避免重新编译依赖项目,从而加快Groovy编译。

看见Groovy编译避免了解更多详情。

增量Groovy编译

当需要编译时,Gradle现在对增量Groovy编译有了实验性的支持。

如果只修改了一小部分Groovy源文件,那么只有受影响的源文件会被重新编译。例如,如果你只改变一个Groovy测试类,Gradle不需要重新编译所有的Groovy测试源文件。Gradle将只重新编译改变的类和受它们影响的类。

看见增量Groovy编译更多详情,请参阅用户手册。

Java项目的测试夹具

Gradle 5.6引入了一个新的Java测试夹具插件可以与java或者java-library创建常规插件testFixtures源集。Gradle将自动执行必要的布线,以便test编译依赖于测试夹具。更重要的是,这个插件还允许其他项目依赖于该项目的测试夹具。

例如:

dependencies {
   // this will add the test fixtures of "my-lib" on the compile classpath of the tests of _this_ project
   testImplementation(testFixtures(project(":my-lib")))
}

使用设置脚本集中管理插件版本

Gradle 5.6使得管理你的构建所使用的插件版本变得更加容易。通过在新的设置脚本中配置所有插件版本pluginManagement.plugins {}块,构建脚本可以通过plugins {}块,而不指定版本。

pluginManagement {
    plugins {
        id 'org.my.plugin' version '1.1'
    }
}

以这种方式管理插件版本的一个好处是pluginManagement.plugins {}块不具有与生成脚本相同的约束语法plugins {}阻止。插件版本可以从gradle.properties或者以编程方式定义。

看见插件版本管理了解更多详情。

使用Java库插件,为Windows上的大型项目提供更好的性能

在Windows上,当从java到java-library插件。这是由类路径上的大量类文件造成的。

您现在可以告诉java-library插件到编译类路径上的jar优先于类文件夹通过设置org.gradle.java.compile-classpath-packaging系统属性到true.

改进了对类路径上的ZIP存档的处理

编译类路径和运行时类路径分析现在将检测最常见的zip扩展,而不仅仅是支持.jar.

Gradle也将检查嵌套的zip存档,而不是把它们当作blobs。这提高了构建缓存命中对于将这种嵌套的zip作为输入的任务,例如当测试打包成fat jar的应用程序时。

ZIP分析还避免解包不相关的条目。例如编译类路径上的资源文件。这提高了具有大量资源文件的项目的性能。

支持PMD增量分析

PMD插件现在支持使用PMD的增量分析缓存,以提高性能时,文件没有改变之间的建设。要启用增量分析,请将以下内容添加到您的PMD配置中:

pmd {
    incrementalAnalysis = true
}

供稿人胡安·马丁·索图约·多德罗.

可执行Jar支持project.javaexec和JavaExec

JavaExec和project.javaexec现在将运行一个可执行的jarJavaExec.main属性尚未设置,并且类路径解析为单个文件。

在这些情况下,Gradle将假设类路径中的单个jar是一个可执行的jar,并将使用java -jar。为了正确执行Main-Class属性需要在可执行文件jar中设置。

由于斯蒂芬·温德米勒为这部电影奠定了基础。

弃用警告时生成失败

这warning-mode命令行选项现在有一个新的fail价值会表现得像all此外,如果在执行期间报告了任何弃用警告,则使构建失败。

现在可以正确处理不区分大小写的文件系统上的文件名大小写更改

在不区分大小写的文件系统(如NTFS和APFS)上,只改变大小写的文件/文件夹重命名现在可以由Gradle的文件复制操作正确处理。

例如,重命名Copy调用的任务file.txt到FILE.txt现在会导致FILE.txt在目标目录中创建。

这Sync任务和Project.copy()和sync()操作现在也像预期的那样处理大小写重命名。

不可用的文件会得到更好的处理

通常,在任务的输入和输出中发现的断开的符号链接、命名管道和不可读的文件/目录(以下称为不可用文件)被优雅地处理,就好像它们不存在一样。

例如,复制到一个有剩余命名管道或断开符号链接的目录将不再中断构建。

Linux aarch64机器上丰富的控制台输出

Gradle现在可以检测到它正在Linux aarch64机器上的交互终端中运行,并且在这种情况下会生成丰富的控制台输出(比如彩色文本、进度信息)。

由于叶达鑫将此支持添加到原生平台.

对分叉Java进程的调试支持

Gradle现在有了一个新的DSL元素来配置Java进程的调试。

project.javaexec {

  debugOptions {
     enabled = true
     port = 4455
     server = true
     suspend = true
   }
}

此配置将以下JVM参数附加到进程中:-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=4455

这debugOptions配置可用于project.javaExec对于使用JavaExec类型,包括test任务。

插件作者的改进

工人API改进

这个版本对Worker API进行了大量改进。

首先,当使用类加载器或进程隔离提交工作时,类路径现在更干净了。额外的jar(比如Gradle自己使用的外部jar)不应该再出现在worker类路径中。

第二,引入了新的类,使得定义工作单元实现更加简单和类型安全。这也使得处理工作参数中的空值更加简单。而不是Runnable,工作单元是通过扩展WorkAction和WorkParameters接口。例如:

// Define an interface that represents the parameters of your WorkAction.  Gradle will generate a parameters object from this interface.
interface ReverseParameters extends WorkParameters {
    Property<File> getFileToReverse()
    Property<File> getDestinationFile()
}

// Define an abstract class that represents your unit of work and uses the parameters defined above.
// No need to define the getParameters() method - this will be injected by Gradle.
abstract class ReverseFile implements WorkAction<ReverseParameters> {
    @Override
    public void execute() {
        File fileToReverse = parameters.fileToReverse.get()
        parameters.destinationFile.get().text = fileToReverse.text.reverse()
        if (Boolean.getBoolean("org.gradle.sample.showFileSize")) {
            println "Reversed ${fileToReverse.size()} bytes from ${fileToReverse.name}"
        }
    }
}

最后,新的方法已经添加到WorkerExecutor使API更加简单易用。这noIsolation(), classLoaderIsolation()和processIsolation()方法都返回一个WorkQueue对象,可用于提交具有相同需求的多个工作项。例如:

// Create a WorkQueue with requirements for all work that is submitted to it
WorkQueue workQueue = workerExecutor.processIsolation() { ProcessWorkerSpec spec ->
    // Configure the options for the forked process
    forkOptions { JavaForkOptions options ->
        options.maxHeapSize = "512m"
        options.systemProperty "org.gradle.sample.showFileSize", "true"
    }
}

// Create and submit a unit of work for each file
sourceFiles.each { file ->
    workQueue.submit(ReverseFile.class) { ReverseParameters parameters ->
        parameters.fileToReverse = file
        parameters.destinationFile = project.file("${outputDir}/${file.name}")
    }
}

参见用户手册有关使用新API的更多信息。

现有的WorkerExecutor.submit()方法仍然可以使用,但在Gradle 6.0中将被弃用,在Gradle 7.0中将被移除。

任务相关性适用于@Input类型的属性Provider

Gradle可以根据某些任务输入属性的值自动计算任务依赖关系。例如,对于用批注的属性@InputFiles这是有类型的FileCollection或者Provider<Set>,Gradle将检查属性值,并自动为集合中的任何任务输出文件或目录添加任务依赖关系。

在这个版本中,Gradle还对用@Input并且有类型Provider(其中还包括以下类型Property).这允许您将一个任务输出连接到另一个任务的非文件输入参数。例如,您可能有一个运行git命令来确定当前分支的名称,另一个任务使用分支名称来生成应用程序包。通过这一更改,您可以将第一个任务的输出连接为第二个任务的输入,并避免运行git配置时的命令。

参见用户手册例如和更多细节。

转换a FileCollection敬aProvider

一种新方法FileCollection.getElements()已添加,以允许将文件集合的内容作为Provider。这Provider跟踪文件集合的元素和生成这些文件的任务,并且可以连接到Property实例。

最终确定的值ConfigurableFileCollection

一种新方法ConfigurableFileCollection.finalizeValue()已添加。此方法解析延迟值,如Provider实例或Groovy闭包或Kotlin函数,它们可能会出现在集合中的最终文件位置,并阻止对集合的进一步更改。

这种方法与其他方法类似finalizeValue()方法,如Property.finalizeValue().

防止对Property或者ConfigurableFileCollection

新方法Property.disallowChanges()和ConfigurableFileCollection.disallowChanges()已添加。这些方法不允许进一步更改属性或集合。

Provider方法

新方法Provider.orElse(T)和Provider.orElse(Provider)已添加。这些允许您对提供者和一些其他值执行“或”运算。

托管嵌套属性

自定义类型,如任务类型、插件或项目扩展,可以实现为抽象类,或者在项目扩展和其他数据类型的情况下,实现为接口。在某些情况下,Gradle可以提供抽象属性的实现。

现在,如果自定义类型有一个用@Nested,Gradle将为getter方法提供一个实现,并为该属性创建一个值。参见用户手册了解更多信息。

工具提供商的改进

通过工具API调试测试

这工具API现在能够在调试模式下使用TestLauncher.debugTestsOn(port)方法。

提升的功能

升级功能是在Gradle的早期版本中酝酿的功能,但现在受到支持并具有向后兼容性。请参阅“用户手册”一节功能生命周期”了解更多信息。

以下是此Gradle版本中提升的功能。

根据分辨率转换依赖性工件

周围的空气污染指数伪像转换不再孵化。

已修复问题

在Gradle 5.6.4中修正了1个问题。

[#11083] - Can’t configure kotlinOptions after upgrade to gradle 5.6.3 using kotlin-dsl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值