您可能从未听说过的服务缺少用户名,密码或令牌? 这通常发生在您尝试执行任何操作(例如仅构建项目)时,不仅发生在使用给定的插件(例如在线代码覆盖工具)时。 我不想修改我的环境,而只是为另一个开源项目提供一个小的修复。 这很烦我,我想更改它。 从Gradle 2.13开始,这成为可能。 但是,让我们从原因开始(如果您仅对解决方案感兴趣,请前进至最后两段)。

为什么会显示“找不到财产……”?

大多数Gradle插件都需要配置。 可以直接在build.gradle设置一些属性,但是其他一些属性(尤其是凭据)最好保留在~/.gradle/gradle.properties 。 因此,插件配置部分通常如下所示:

bintray {user = project.getProperty('bintrayUser')key = project.getProperty('bintrayKey')...
}

或者那个:

bintray {user = getProperty('bintrayUser')key = getProperty('bintrayKey')...
}

甚至更短:

bintray {user = bintrayUserkey = bintrayKey...
}

对于在其本地配置中定义了bintrayUserbintrayKey的项目开发人员而言,它工作正常,但是对于每个未每日上传到Bintray的人,它都会失败:

* What went wrong:
A problem occurred evaluating root project 'another-nice-open-source-project'.
> Could not find property 'bintrayKey' on com.jfrog.bintray.gradle.BintrayExtension_Decorated@2ecc563.

结果是project.getProperty() (未提及显式分配)只是在未找到特定属性时引发异常。 不好的是,代码是在配置短语中执行的。 因此,即使与该特定插件无关的每项任务(例如gw tasksgw wrapper )的执行都会失败。

作为解决方法,必须执行防护检查:

bintray {    //Gradle <2.13user = hasProperty('bintrayUser') ? getProperty('bintrayUser') : ''key = hasProperty('bintrayKey') ? getProperty('bintrayKey') : ''...
}

看起来不太紧凑。 作为另一个选择,可以将虚拟占位符保留在项目配置中,但是从Gradle 2.13开始,有一种更好的方法来应对。

project.findProperty()

Gradle 2.13是我对新方法project.findProperty() 贡献的第一个版本。 它的行为与getProperty()相同,但是不抛出异常,而是返回null值。 这大大简化了分配:

bintray {    //Gradle 2.13+user = findProperty('bintrayUser') ?: ''key = findProperty('bintrayKey') ?: ''...
}

有人可能会说Optional作为返回值可能会更好,但这是一个API,并且Gradle支持早于8的Java。

摘要

对我来说, findProperty是我在Gradle中经常寻找的一种方法。 很遗憾,我花了一年多的时间才提出这项要求。 Gradle 2.13刚刚发布,跨项目的版本升级将逐步进行。 这可能需要一些时间,但是每个迁移到2.13的项目都将能够简化其配置,使“无法在插件Y上找到属性X”错误消息成为过去的回忆(当然,除非您确实需要将特定的插件配置为用它)。

经过Gradle 2.13测试。

翻译自: https://www.javacodegeeks.com/2016/04/better-dealing-not-find-property-x-plugin-y-gradle-2-13.html

在Gradle 2.13中更好地处理“在插件Y上找不到属性X”相关推荐

  1. Gradle 之 Android 中的应用

    在上一篇文章中 Gradle 之语言基础 Groovy 主要介绍了 Groovy 的基础语法(如果没有 Groovy 的基础,建议先看看上篇文章,如果可以动手敲一下里面的示例代码就更好不过了),也是为 ...

  2. android中gradle的作用,Gradle 之 Android 中的应用

    在上一篇文章中 Gradle 之语言基础 Groovy 主要介绍了 Groovy 的基础语法(如果没有 Groovy 的基础,建议先看看上篇文章,如果可以动手敲一下里面的示例代码就更好不过了),也是为 ...

  3. Gradle在Android中的简单使用

    Gradle在Android中简单的使用 还望支持个人博客站:http://www.enjoytoday.cn Android Studio 使用gradle进行工程构建,为了更好的了解整个andro ...

  4. Beetl2.7.13 中文文档

    ## Beetl2.7.13 中文文档 ### 1. 什么是Beetl Beetl目前版本是2.7.13,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使 ...

  5. ios中位置权限_iOS 13中的位置权限

    ios中位置权限 In iOS 13, Apple made a big changes in location permission's behaviour, especially for &quo ...

  6. UC伯克利提出小批量MH测试:令MCMC方法在自编码器中更强劲

    转载请注明出处:乐投网 - UC伯克利提出小批量MH测试:令MCMC方法在自编码器中更强劲 近日伯克利大学官方博客发文提出小批量 MH(Minibatch Metropolis-Hastings),即 ...

  7. 中国电信SIP账号在FreePBX 13中的中继设置

    在<配置EPON家庭网关接入中国电信电话交换IP网络>一文中我们介绍了如何使用MicroSIP软电话程序接入中国电信的电话IP网络,并提出了实现局域网电话软交换(IP-PBX)的可能性.以 ...

  8. 好用!期待已久的文本块功能究竟如何在 Java 13 中发挥作用?

    你继续半年一更,我继续用 Java 7/8. 这可能是很多朋友目前的真实情况.说实话,Java "每半年发布一个新版本"的节奏确实快了点.但不管怎样,新技术.新特性还是值得我们学一 ...

  9. Gradle项目中gradle.build文件中的buildScript代码块

    感谢原作者的劳动 在编写Gradle脚本的时候,在build.gradle文件中经常看到这样的代码: buildScript {repositories {mavenCentral()} }repos ...

最新文章

  1. 笛卡尔积 php,PHP自定义函数生成笛卡尔积
  2. 7000p可以加装固态吗_解惑丨地暖不热加装循环泵可以吗?
  3. select sum也会返回null值
  4. c语言课设报告河海大学,2020河海大学计算机学硕838经验贴
  5. 【JUC并发编程06】多线程锁 (公平锁和非公平锁,死锁,可重锁)
  6. 2-1 什么是人工智能|人工智能框架TensorFlow应用实践
  7. Linux下tar.xz结尾的文件的解压方法
  8. 使用NAGIOS监控网络、系统及服务
  9. [html] 简述下html5的离线储存原理,同时说明如何使用?
  10. mysql identity sql,SQL Server的Identity字段使用/复制/重设
  11. 零基础学云计算怎么样?2020年云计算学习路线
  12. vscode不能跳转_vscode-goto-node-modules 一个快速定位 node 模块的 vscode 插件
  13. 计算机组成原理:系统总线IO设备
  14. java b2b2c 多商户 电商 源码,整套可运行
  15. C语言符号优先级——(“++”符号的的坑)
  16. 企业微信自建应用 网页授权登录 获取用户信息
  17. 项目jar包启动的命令
  18. 手机删掉的照片怎么恢复
  19. MP4文件格式简要解析---代码解析
  20. 深度神经网络:WX+b-vs-XW+b

热门文章

  1. 小菜:关于main方法的面试题
  2. 20 个使用 Java CompletableFuture的例子
  3. 什么是Spring Boot?
  4. 干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
  5. sql server模糊查询、分组
  6. CentOS - 修改主机名教程(将 localhost.localdomain 改成其它名字)
  7. 检查异常和非检查异常 有空你去学一下检查异常和非检查异常
  8. 用IDEA把SpringBoot项目打成jar发布项目 不要用 在上面有可以用的
  9. linux下单点故障的软件,KeepAlived防止单点故障
  10. DFS应用——找出无向图的割点