gradle文件不识别_识别Gradle约定

gradle文件不识别

通过约定进行配置具有许多优点,尤其是在简洁方面,因为开发人员不需要显式配置通过约定隐式配置的内容。 但是,在利用约定进行配置时,需要注意这些约定。 这些约定可能已记录在案,但是当我可以编程方式确定约定时,我总是喜欢它,因为文档可能会过时(代码背后的相同原理始终是正确的,而注释有时是正确的)。 我通过查看如何识别与Gradle Java Plugin关联的特定约定开始本文。 然后,我对该方法进行一般化,以识别与与Gradle构建的根项目相关联的所有任务相关联的所有属性。

Gradle插件上的Gradle文档说明了有关Gradle插件的重要性及其对Gradle构建的补充的以下内容:


Gradle的核心故意为现实世界的自动化提供了很少的有用功能。 插件添加了所有有用的功能,例如编译Java代码的功能。 插件添加新任务(例如JavaCompile),域对象(例如SourceSet),约定(例如主Java源位于src / main / java),以及扩展核心对象和其他插件的对象。

这篇文章介绍了Java插件为Gradle构建带来的一些任务,域对象和约定。 首先,我需要一个非常简单的Gradle构建文件。 它仅包含应用Java插件的一行。 接下来显示在Gradle构建文件build-java-plugin.gradle

build-java-plugin.gradle

apply plugin: 'java'

有了该单行的Gradle构建文件,可以通过运行gradle -b build-java-plugin.gradle tasks命令轻松查看插件提供了哪些Gradle gradle -b build-java-plugin.gradle tasks 。 接下来的两个屏幕快照显示了运行空的Gradle构建文件的输出,以及仅使用Java插件的应用程序运行Gradle构建文件的输出。

emptyGradleBuildTasksOutput

gradleJavaPluginTasksOutput

通过将运行Gradle“任务”的输出与空构建文件的输出与运行Gradle“任务”的构建文件与应用Java插件的输出进行比较,我们可以看到Gradle具有相同的“构建设置任务”集和“帮助任务”,无论是否应用了插件。 更重要的是,我们看到Java插件添加了许多新任务,这些任务分类为“构建任务”(汇编,构建,buildDependents,buildNeeded,类,clean,jar,testClasses),“文档任务”(javadoc),“验证任务”(检查,测试)和“规则”。

我在Gradle 1.10中享受的一项功能是Gradle 1.8 (我使用的较早版本)没有的功能是,可以在命令行中查询特定Gradle任务的详细信息 。 在Java插件任务compileJavajarjavadoc的下一个屏幕快照中对此进行了演示。 通过使用命令行上的help --task <task_name>命令,所有这三个任务都有写入标准输出的详细信息。 有关Java插件任务的这些详细信息,也可以在Gradle用户指南中找到

gradle_1_10_help_task_details

由于Gradle基于Groovy构建,因此使用“蛮力”确定Java插件的特性相当容易。 下一个代码清单,针对build-java-plugin-properties.gradle ,演示了如何使用Groovy确定Gradle属性(可以用-P指定的那些属性,而不是用-D指定的系统属性 ),该属性可在构建脚本之前和之后使用。在应用Java插件后,然后使用Groovy的高度方便的重写减法运算符来查找差异。 Java插件添加到Gradle脚本的所有属性的名称和值(属性“ properties”除外)按字母顺序显示。

// build-java-plugin-properties.gradle
//
// Displays properties that Gradle Java Plugin adds beyond properties already
// specified for any Gradle build.

def propertiesBefore = this.properties

apply plugin: 'java'

def propertiesAfter = this.properties

def extraProperties = propertiesAfter - propertiesBefore

def extraPropertiesKeys = new TreeSet<String>()
extraProperties.each
{ property ->
   if (property.key != "properties")
   {
      extraPropertiesKeys.add(property.key)
   }
}

extraPropertiesKeys.each
{ key ->
   println "${key} : ${extraProperties.get(key)}"
}

下图显示了屏幕快照,其中包含运行此脚本的输出。 屏幕快照没有显示完整的输出,但是在图像后的文本中显示了较大的输出(所有属性)。

propertiesJavaPluginAddsToGradleBuild

从Gradle脚本上方运行以查看Java插件属性的输出

apiDocTitle : gradleExample API
archivesBaseName : gradleExample
assemble : task ':assemble'
binaries : [classes 'main', classes 'test']
build : task ':build'
buildDependents : task ':buildDependents'
buildNeeded : task ':buildNeeded'
buildTasks : [build]
check : task ':check'
classes : task ':classes'
clean : task ':clean'
compileJava : task ':compileJava'
compileTestJava : task ':compileTestJava'
defaultArtifacts : org.gradle.api.internal.plugins.DefaultArtifactPublicationSet_Decorated@bc80d8
dependencyCacheDir : C:\java\examples\groovyExamples\gradleExample\build\dependency-cache
dependencyCacheDirName : dependency-cache
distsDir : C:\java\examples\groovyExamples\gradleExample\build\distributions
distsDirName : distributions
docsDir : C:\java\examples\groovyExamples\gradleExample\build\docs
docsDirName : docs
inheritedScope : org.gradle.api.internal.ExtensibleDynamicObject$InheritedDynamicObject@c10304
jar : task ':jar'
javadoc : task ':javadoc'
libsDir : C:\java\examples\groovyExamples\gradleExample\build\libs
libsDirName : libs
manifest : org.gradle.api.java.archives.internal.DefaultManifest@1ad3677
metaInf : []
module : org.gradle.api.internal.artifacts.ProjectBackedModule@d2eead
processResources : task ':processResources'
processTestResources : task ':processTestResources'
rebuildTasks : [clean, build]
reporting : org.gradle.api.reporting.ReportingExtension_Decorated@33ab8f
reportsDir : C:\java\examples\groovyExamples\gradleExample\build\reports
reportsDirName : reports
runtimeClasspath : file collection
sourceCompatibility : 1.7
sourceSets : 
sources : [, ]
status : integration
targetCompatibility : 1.7
test : task ':test'
testClasses : task ':testClasses'
testReportDir : C:\java\examples\groovyExamples\gradleExample\build\reports\tests
testReportDirName : tes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值