gradle-4.8.1-all 百度网盘下载

Gradle 4.8.1 发布

Gradle团队很高兴宣布Gradle 4.8.1。

首先也是最重要的,这个版本的Gradle特性依赖性锁定:一种锁定依赖版本的机制,允许构建在面对动态版本或版本范围时变得可重现。阅读用户手册中关于依赖性锁定的章节了解如何利用这一激动人心的新功能。

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

改进事项

  • 签名插件现在支持签署出版物的所有工件。
  • Maven Publish插件现在提供了一个专用的类型安全的DSL定制生成的POM作为Maven出版物的一部分。
  • Ivy Publish插件现在提供了一个专用的类型安全的DSL来定制生成的Ivy模块描述符作为常春藤出版的一部分。
  • 配置范围依赖性排除现已发布

这maven-publish和ivy-publish插件现在被认为是稳定的,使用maven不鼓励使用插件,因为它最终会被弃用—请迁移。

用户体验增量注释处理得到了改进。当处理器做了一些Gradle检测不到的事情时,编译将不再失败。未使用的非增量处理器不再阻止增量编译。最后,注释处理器现在能够动态地决定它们是否是增量的。这允许具有扩展机制的处理器在启用增量注释处理之前检查扩展的增量。

新的原生插件随着更好地控制系统包括路径对于本机编译和其他改进。

Gradle 4.8包括Kotlin DSL 0.17.5,带来了最新的Kotlin 1.2.41版本和对用户体验的许多改进,包括位置感知运行时错误报告、嵌套扩展的方便配置、更快更精简的配置时间和测试工具包支持。同时,IntelliJ IDEA Kotlin插件修复了许多长期存在的构建脚本编辑相关问题。请参阅中的详细信息和示例Kotlin DSL v0.17发行说明。

我们希望你用Gradle 4.8建立快乐,我们期待你的反馈通过推特或者在GitHub上。

升级说明

通过更新您的包装器属性,切换您的构建以快速使用Gradle 4.8:

gradle wrapper --gradle-version=4.8

独立下载可从以下网址获得gradle.org/releases。

新的和值得注意的

以下是这个Gradle版本中引入的新功能。

动态依赖关系的锁定

Gradle现在提供了一种锁定动态版本的机制。即使在使用版本范围声明依赖项时,它也使得构建可重复。

除其他外,这实现了以下场景:

  • 处理多存储库的公司不再需要依赖-SNAPSHOT或者改变依赖关系,当依赖关系引入错误或不兼容时,有时会导致级联失败。现在可以针对主要或次要版本范围声明依赖项,从而能够在CI上测试最新版本,同时利用锁定来获得稳定的开发人员版本。
  • 想要总是使用最新的依赖项的团队可以使用动态版本,只为发布锁定他们的依赖项。release标签将包含锁文件,当需要开发bug修复时,允许构建完全可复制。

为了使用依赖关系锁定,首先要在配置中启用它:

dependencyLocking {
    lockAllConfigurations()
}

然后运行一个构建,告诉Gradle保持锁状态:

gradle test --write-locks

从这一点开始,对于任何锁定状态对Gradle可用的构建,所有具有锁定状态的配置都将解析锁定的版本。

对已发布依赖项的更改不会影响您的构建,您必须重新生成或更新锁,然后它们才会被视为依赖项。另一方面,对构建脚本的更改会影响已解析的依赖项集,这会导致它失败,从而确保在锁文件中没有匹配更新的情况下,依赖项不会更改。

前往依赖项锁定文档了解有关使用此功能的更多详细信息。

签署出版物

这签名插件现在支持对发布的所有工件进行签名,例如将工件发布到Maven或Ivy存储库时。

publishing {
  publications {
    mavenJava(MavenPublication) {
      from components.java
    }
  }
}

signing {
  sign publishing.publications
}
定制生成的POM

这Maven发布插件现在提供了一个专用的、类型安全的DSL来定制作为Maven出版物的一部分生成的POM。下面的示例演示了一些新的属性和方法。请参阅DSL参考获取完整的文档。

publishing {
  publications {
    mavenJava(MavenPublication) {
      from components.java
      pom {
        name = "Demo"
        description = "A demonstration of Maven POM customization"
        url = "http://www.example.com/project"
        licenses {
          license {
            name = "The Apache License, Version 2.0"
            url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
          }
        }
        developers {
          developer {
            id = "johnd"
            name = "John Doe"
            email = "john.doe@example.com"
          }
        }
        scm {
          connection = "scm:svn:http://subversion.example.com/svn/project/trunk/"
          developerConnection = "scm:svn:https://subversion.example.com/svn/project/trunk/"
          url = "http://subversion.example.com/svn/project/trunk/"
        }
      }
    }
  }
}
定制生成的Ivy模块描述符

这Ivy发布插件现在提供了一个专用的、类型安全的DSL来定制作为Ivy出版物的一部分生成的Ivy模块描述符。下面的示例演示了新的属性和方法。请参阅DSL参考获取完整的文档。

publishing {
  publications {
    ivyJava(IvyPublication) {
      from components.java
      descriptor {
        license {
          name = "The Apache License, Version 2.0"
          url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
        }
        author {
          name = "Jane Doe"
          url = "http://example.com/users/jane"
        }
        description {
          text = "A concise description of my library"
          homepage = "http://www.example.com/library"
        }
      }
    }
  }
}
现在发布了配置范围的依赖性排除

这Ivy发布插件现在将在配置上(而不是在单个依赖上)定义的依赖排除规则写入生成的Ivy模块描述符;这Maven发布插件现在为生成的POM中的每个依赖项重复它们。

改进的增量注释处理

此版本的Gradle对提供了以下改进增量注释处理API.

  • 当处理器做了一些Gradle知道不会增量工作的事情时,编译将不再失败。相反,Gradle将简单地做一个完整的重新编译,并通知用户这个问题。
  • 未使用的非增量处理器将不再阻止增量编译。这意味着增量和非增量处理器可以安全地封装在一起。只要用户不在他们的代码中使用非增量处理器,一切都将保持增量。
  • 处理器将能够动态地决定它们是否是增量的。一些注释处理器具有扩展机制,在它们可以选择加入之前,首先需要检查所有扩展的增量。这个新机制将取代META-INF注册。

如果您有注释处理器,请阅读文档了解如何为您的库启用增量注释处理。

更好地控制本机编译的系统包含路径

Gradle本地项目继续进行改善和发展Gradle的本地生态系统支持。

现在可以从URI中获取文本资源

像通用checkstyle配置文件这样的文本资源现在可以直接从URI中获取。Gradle将应用与远程构建脚本相同的缓存。

checkstyle {
    config = resources.text.fromUri("http://company.com/checkstyle-config.xml")
}
使用构造函数参数创建任务

现在,您可以创建一个任务并将值传递给它的构造函数。这对于由不应由用户直接配置的插件创建的任务非常有用。

为了向构造函数传递值,构造函数必须用@javax.inject.Inject。鉴于以下情况Task类别:

class CustomTask extends DefaultTask {
    final String message
    final int number

    @Inject
    CustomTask(String message, int number) {
        this.message = message
        this.number = number
    }

    @TaskAction
    void doSomething() {
        println("Hello $number $message")
    }
}

然后,您可以创建一个任务,在参数列表的末尾传递构造函数参数。

tasks.create('myTask', CustomTask, 'hello', 42)

在Groovy构建脚本中,您可以使用constructorArgs.

task myTask(type: CustomTask, constructorArgs: ['hello', 42])

在Kotlin构建脚本中,您可以使用tasks TaskContainer.

tasks.create<CustomTask>("myTask", "hello", 42)

更多详细信息,请访问用户指南.

不可变文件集合

现在可以通过使用ProjectLayout.files(Object…)。还有一种创建可配置文件集合的新方法,ProjectLayout.configurableFiles(Object…),它将取代Project.files()从长远来看。FileCollection创建者ProjectLayout.files()性能稍好一些,应该在不需要可变性的时候使用。例如,它们非常适合创建带有构造函数参数的任务。

CodeNarc升级

所使用的CodeNarc的默认版本codenarc plugin是1.1。

蚂蚁升级

Gradle使用的Ant的嵌入式版本是1.9.11。

提升的功能

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

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

Ivy Publish和Maven发布标记为稳定的插件

这Ivy发布插件和Maven发布插件那些已经潜伏因为Gradle 1.3现在被标记为稳定。现在两个插件支持签名, 发布配置范围的依赖项排除,并提供新的专用DSL用于定制生成的POMs或者Ivy模块描述符。此外,与publishing扩展已经被处理,现在行为类似于其他扩展对象。因此,这些插件现在分别是将工件发布到Ivy和Maven存储库的首选。

已修复问题

Gradle 4.8.1中修复了5个问题。

[#5740] - Gradle和Java 7:无法从Maven Central下载
[#5722]-[4.8]compilegroovy . destination dir不支持source sets . main . groovy . output dir
[#5708] -使用project.tasks.withType有时会导致concurrent modification exception
[#5692] - Gradle 4.8在使用dependencySubstitution和failOnVersionConflict时不再认为版本相等
[#4785] -项目到外部相关性循环处理导致意外行为

嵌套的afterEvaluate请求不再被默默地忽略

在此版本发布之前,afterEvaluate在执行期间发生的请求afterEvaluate回调被默默忽略。

考虑以下代码:

afterEvaluate {
    println "> Outer"
    afterEvaluate {
        println "Inner"
    }
    println "< Outer"
}

在Gradle 4.7和更低版本中,它将打印:

> Outer
< Outer

与Inner被默默忽略的部分。

从Gradle 4.8开始,嵌套afterEvaluate为了保持回调,请求将被异步处理稍后执行换句话说,相同的代码现在将打印出来:

> Outer
< Outer
Inner

请注意beforeEvaluate其他类似的钩子不已经改变,但仍然会忽略嵌套请求,这种行为在未来的Gradle版本中会有所改变(格雷尔/格雷尔#5262).

贬值

由于Gradle的自然演变而变得被取代或不相关的特征变成反对,并计划在下一个主要的Gradle版本(Gradle 5.0)中删除。请参阅上的用户指南部分功能生命周期”了解更多信息。

以下是此Gradle版本中新弃用的项目。如果您对折旧有任何疑问,请通过格拉德论坛。

发布块的延迟配置

直到Gradle 4.7publishing {}块被隐式处理,就好像它内部的所有逻辑都是在项目评估后执行的一样。这造成了相当大的混乱,因为它是唯一一个以这种方式运行的块。作为Gradle 4.8中稳定工作的一部分,我们反对这种行为,并要求所有用户迁移他们的构建。

请参阅迁移指南了解更多信息。

方法打开FileCollection

FileCollection.add()现已弃用。使用ConfigurableFileCollection.from()相反。您可以创建一个ConfigurableFileCollection通过Project.files().
FileCollection.stopExecutionIfEmpty()不推荐使用,没有替换。你可以用@SkipWhenEmpty在一个FileCollection属性,或者引发StopExecutionException请改为手动添加到代码中。

方法打开Signature

Signature.getToSignArtifact()应该是一个内部API,现在已被弃用,没有替换。

SimpleFileCollection

内部SimpleFileCollection实施FileCollection已被否决。你应该使用Project.files()相反。

使用单一测试选择系统属性

这系统属性的使用选择要执行的测试已被否决。内置的–tests过滤早已取代了这一功能。

远程调试测试系统属性的使用

系统属性的使用(-Dtest.debug)来启用测试进程的远程调试已被否决。内置的–debug-jvm标志早就取代了这个功能。

覆盖Gradle的内置任务

定义习俗wrapper或者init任务已弃用。请改为配置现有任务。

即代替这个:

task wrapper(type:Wrapper) {
    //configuration
}

执行以下操作:

wrapper {
    //configuration
}

潜在的突破性变化

更改了丢失初始化脚本的行为

在Gradle的早期版本中,在命令行上指定的不存在的init脚本将被忽略。在此版本中,如果命令行上指定的任何init脚本不存在,构建将会失败。

TaskContainer.remove()现在实际上删除了任务

前情提要TaskContainer.remove()不实际上删除任务,但现在它做到了。由于插件可能意外地依赖于这种行为,请检查您是否调用了该方法,如果是,请验证您的插件是否按预期工作。

Signature.setFile()不再更改要发布的文件

此前,Signature.setFile()可用于替换用于发布Signature。但是,实际的签名文件仍在其默认位置生成。因此,Signature.setFile()现已弃用,将在未来版本中删除。

解析exclusions在Maven POM中,现在接受隐式通配符

以前,Maven POM具有exclusion缺少groupId或者artifactId被格拉德忽略了。这不再是这种情况,因此可能导致模块从先前包括的依赖图中被排除。

对Gradle Kotlin DSL的更改

科特林DSL现在尊重JSR-305包注释。因此,带注释的Java元素的类型以前被视为Kotlin平台类型,因此是不可空的,现在将被视为有效的不可空或可空类型,这取决于JSR-305注释。此更改可能会导致脚本编译错误。

参见发布说明了解更多信息。

对普通控制台行为的更改

在Gradle 4.7中,普通控制台发生了变化,任务输出被分组,很容易确定哪个任务产生了给定的输出项。通过这一更改,错误消息也被分组并发送到标准输出流,以便它们也可以与其他任务输出分组在一起。不幸的是,这使得无法将错误消息重定向到不同的文件句柄,虽然它改善了控制台用户的体验,但它恶化了那些喜欢将错误输出分开的人的体验。我们现在已经更改了这种行为,以便当控制台连接到标准输出和标准错误时,错误消息仅在标准输出上分组。在所有其他情况下,错误消息被发送到标准错误,类似于在Gradle 4.7之前的版本中处理它们的方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值