【问题标题】:Gradle: could not set unknown property 'classDumpFile' in IntellijGradle:无法在 Intellij 中设置未知属性“classDumpFile”
【发布时间】:2018-02-24 04:07:50
【问题描述】:

我一直在互联网上搜索并询问 irc 聊天,但他们都没有或没有给出任何试图解决我的问题的答案。

我正在尝试让我的项目在Intellij IDE 上使用JaCoCo,测试将在Jenkins 服务器中完成,我在我的gradle.build 文件中为JaCoCo 设置了一些设置但是构建编译失败说Could not set unknown property 'classDumpFile' for object of type org.gradle.testing.jacoco.plugins.JacocoTaskExtension.

构建文件是这样的:

version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'jacoco'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

jacoco{
    toolVersion = '0.7.6.201602180812'
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    testCompile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5'
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.6'
    compile group: 'org.json', name: 'json', version: '20180130'
}
test{
    jacoco {
        append = false
        destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
        classDumpFile = file("$buildDir/jacoco/classpathdumps")
    }
}

这是 IntelliJ 在创建项目时生成的 gradle 文件,我一直在手动添加一些依赖项,现在管理 jenkins 服务器的开发人员告诉我将这些 JaCoCo 设置用于 sonarQube要正常工作,IntelliJ 无法进行任何编译,但在将代码提交给 Jenkins 时,它工作正常。

我一直在寻找为什么会发生这种情况,我发现这可能是由于 gradle 版本,应该使用 classDumpDir 代替,这使得 IntelliJ 工作但 Jenkins 服务器无法构建项目。

我相信这可能是由于 gradle 版本或其他原因,但我仍在学习如何使用 JavaIntelliJ,其他开发人员正在使用 Eclipse,他们没有收到此错误,但我没有不想切换到Eclipse,因为我对IntelliJ 已经很熟悉了

如果有必要,这里是我正在使用的版本:

  • CLI Gradle 版本:2.10
  • Java 版本:Ubuntu openjdk 1.8.0_151
  • IntelliJ 版本:2017.3.4 社区版

【问题讨论】:

  • 你能用 Gradle 从命令行构建项目吗?尝试使用不同的 jacoco 插件版本。可能是您在 build.gradle 中使用的 classDumpFile 属性在该特定插件版本中不存在。也尝试不同的 Gradle 版本(在设置(首选项)| 构建、执行、部署 | 构建工具 | Gradle 中)。
  • @Andrey 我尝试更改 jacoco 的版本,但我仍然收到此错误,问题是我必须设置该版本的 jacoco,以便 jenkins 服务器可以捕获所有覆盖率报告,但是我认为这可能是一个 gradle 版本问题,我一直在尝试多种方法来更改版本,但我什至不知道 IDE 使用的是哪个版本
  • IDE 正在使用 Gradle,在文件 | 中指定设置 |构建、执行、部署 |构建工具 | Gradle 设置。

标签: java gradle intellij-idea jacoco


【解决方案1】:

看起来他们将变量从 classDumpFile 更改为 classDumpDir。

test {
    jacoco {
        append = false
        classDumpDir = file("$buildDir/jacoco/classpathdumps")
    }
}

这对我有用

【讨论】:

  • 这在我的本地机器上也适用于我,但 jenkins 服务器因此设置而失败
  • 使用 gradle wrapper 版本4.8.1,这有助于克服标题中的错误;但在我的情况下,随后的错误随之而来,我仍然不得不降级 gradle 包装器版本,类似于Accepted Answer
【解决方案2】:

经过长时间的搜索、测试和失败,我终于找到了解决此问题的方法。

我发现在gradle/wrapper 目录中有一个带有 gradle 属性的文件,在这个文件中有一个变量定义了要使用的 gradle 并且在我的文件中它被设置为使用 gradle 4.5:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip

我已经问过 DevOps 工程师 jenkins 使用的是哪个 gradle 版本,他说应该是 3.0,所以我将 distributionUrl 值更改为使用 3.0 版本,它可以工作

【讨论】:

  • 在我的情况下,将版本从 4.8.1 更改为 2.9 也有帮助。
  • 既然你在这里指的是 gradle 包装器,我猜这个问题最终没有相关? CLI Gradle version: 2.10
猜你喜欢
  • 1970-01-01
  • 2018-04-15
  • 2021-09-14
  • 2019-05-19
  • 2020-12-14
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多