Gradle Gradle 插件


当前第2页 返回上一页

在上面的示例中我们看到,Java 插件添加了一个任务,名字为 compileJava ,有一个名为 destinationDir 的属性(即配置编译的 Java 代码存放的地方)。Java 插件默认此属性指向项目目录中的 build/classes/main。这是通过一个合理的默认的约定优于配置的例子。

我们可以简单地通过给它一个新的值来更改此属性。

更改插件的默认设置

build.gradle

apply plugin: 'java'
compileJava.destinationDir = file("$buildDir/output/classes")
task show << {
    println relativePath(compileJava.destinationDir)
}  

gradle -q show 的输出结果

> gradle -q show
build/output/classes  

然而,compileJava 任务很可能不是唯 一需要知道类文件在哪里的任务。

Java 插件添加了 source sets 的概念 (见SourceSet) 来描述的源文件集的各个方面,其中一个方面是在编译的时候这些类文件应该被写到哪个地方。Java 插件将 compileJava 任务的 destinationDir 属性映射到源文件集的这一个方面。

我们可以通过这个源码集修改写入类文件的位置。

插件中的约定对象

build.gradle

apply plugin: 'java'
sourceSets.main.output.classesDir = file("$buildDir/output/classes")
task show << {
    println relativePath(compileJava.destinationDir)
}  

gradle -q show 的输出结果

> gradle -q show
build/output/classes  

在上面的示例中,我们应用 Java 插件,除其他外,还做了下列操作:

  • 添加了一个新的域对象类型: SourceSet
  • 通过属性的默认(即常规)配置了 main 源码集
  • 配置支持使用这些属性来执行工作的任务

所有这一切都发生在 apply plugin: "java" 这一步过程中。在上面例子中,我们在约定配置被执行之后,修改了类文件所需的位置。在上面的示例中可以注意到,compileJava.destinationDir 的值也被修改了,以反映出配置的修改。

考虑一下另一种消费类文件的任务的情况。如果这个任务使用 sourceSets.main.output.classesDir 的值来配置,那么修改了这个位置的值,无论它是什么时候被修改,将同时更新 compileJava 任务和这一个消费者任务。

这种配置对象的属性以在所有时间内(甚至当它更改的时候)反映另一个对象的任务的值的能力被称为“映射约定”。它可以令 Gradle 通过约定优于配置及合理的默认值来实现简洁的配置方式。而且,如果默认约定需要进行修改时,也不需要进行完全的重新配置。如果没有这一点,在上面的例子中,我们将不得不重新配置需要使用类文件的每个对象。



标签:Gradle

返回前面的内容

相关阅读 >>

Gradle groovy 插件

Gradle sonar runner 插件

Gradle web 工程构建

Gradle 构建基础

Gradle 标准的 Gradle 插件

Gradle findbugs 插件

Gradle Gradle 插件

Gradle scala 插件

Gradle pmd 插件

Gradle 编写构建脚本

更多相关阅读请进入《Gradle》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...