java - 无法在 Gradle 中获取任务的未知属性?

标签 java gradle groovy

我有以下 Gradle 任务:

  task makeZipDependencies << {
        allDeps = (configurations.runtime + configurations.archives.allArtifacts.files).findAll {
            !(it.name =~ /clover/)
        }                                                                              .unique()
        if ("myApp".equals(project.name)) {
            rootProject.childProjectsRecursive.each {

                try {
                    databaseSqlFileDeps.put(it.name, it.configurations["mySQLFiles"].files)
                } catch (UnknownConfigurationException e) {

                }
            }
        }

这在我之前使用 java 7 和 gradle 1.7 运行我的项目时并没有导致错误。

但是,我已经转移到 Java 8 和 gradle 3.4.1,现在我得到这个错误:

Execution failed for task "makeZipDependencies", could not get unknown property:childProjectsRecursive for root Project myApp of type org.gradle.api.project" 

我需要对我的任务进行哪些更改才能解决此问题?

最佳答案

Gradle 的 API 在版本 1.x(您指定的是 1.7)和 3x(今天的最新版本是 3.4.1)之间发生了很大变化。

我想你需要的是查询subprojects属性的值https://docs.gradle.org/3.4.1/dsl/org.gradle.api.Project.html#org.gradle.api.Project:subprojects

rootProject.subprojects.each { ... }

遗憾的是,没有一个文档可以让您找到版本 1.x 和 3.x 之间的所有更改。我的建议是尽可能更新构建版本以尽量减少迁移影响。在主要发行版本之间切换时,始终注意行为/二进制不兼容问题。

关于java - 无法在 Gradle 中获取任务的未知属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652302/

相关文章:

java - 使用 Gradle 类作为应用程序代码?

java - 导入 NotNull 或 Nullable 并且 Android Studio 不会编译

java - 从java中的另一个线程访问一个线程的变量

Java 变量的作用域

gradle - 如何在自定义gradle插件中创建.jar文件?

java - 仅搜索 map 中的特定值

elasticsearch - Elasticsearch和Groovy脚本嵌套字段聚合匹配

grails - Groovy - 如何替换现有 java 类的方法

java - 获取一个区间内的数字

JavaFX 阻止 UI(和代码)直到服务器调用完成