簡體   English   中英

Windows 10 上的 gradle 測試:無法讀取文件內容:executionHistory.lock

[英]gradle test on Windows 10: Couldn't read file content: executionHistory.lock

我有一個多子模塊項目,我最近開始在 Windows 10 上構建(通常我在 MacOS 上構建/運行。)。 在 Windows 上,對一個特定模塊的測試失敗並顯示以下錯誤:

Couldn't read file content: 'C:\\Users\\Me\\myproject\\.gradle\\6.7.1\\executionHistory\\executionHistory.lock'.

我已經使用--scan運行,它在構建掃描中告訴我同樣的事情。

Gradle 6.7.1 和 Gradle 6.6.1 都會發生這種情況。

它既發生在我身上(在 VirtualBox、Mac 主機上的 Windows 10 來賓 VM 上),也發生在本機運行帶有 Windows 10 的筆記本電腦的隊友身上。

我們沒有使用 Docker。 還有另一個問題看起來與這個問題非常相似,但它不是同一個問題。

來自構建系統的完整堆棧跟蹤並不是很有啟發性; 這是相關的位:

Caused by: java.lang.RuntimeException: Couldn't read file content: 'C:\msys64\home\Me\myproject\.gradle\6.7.1\executionHistory\executionHistory.lock'.
    at org.gradle.internal.fingerprint.classpath.impl.ClasspathFingerprintingStrategy$ClasspathContentFingerprintingVisitor.visitFile(ClasspathFingerprintingStrategy.java:167)
    at org.gradle.internal.snapshot.MissingFileSnapshot.accept(MissingFileSnapshot.java:57)
    at org.gradle.internal.snapshot.CompleteDirectorySnapshot.accept(CompleteDirectorySnapshot.java:65)
    at org.gradle.internal.snapshot.CompleteDirectorySnapshot.accept(CompleteDirectorySnapshot.java:65)
    at org.gradle.internal.snapshot.CompleteDirectorySnapshot.accept(CompleteDirectorySnapshot.java:65)
    at org.gradle.internal.snapshot.CompleteDirectorySnapshot.accept(CompleteDirectorySnapshot.java:65)
    at org.gradle.internal.fingerprint.classpath.impl.ClasspathFingerprintingStrategy.collectFingerprints(ClasspathFingerprintingStrategy.java:119)
    at org.gradle.internal.fingerprint.impl.DefaultCurrentFileCollectionFingerprint.from(DefaultCurrentFileCollectionFingerprint.java:48)
    at org.gradle.internal.fingerprint.impl.AbstractFileCollectionFingerprinter.fingerprint(AbstractFileCollectionFingerprinter.java:48)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.lambda$visitInputFileProperties$1(ExecuteActionsTaskExecuter.java:319)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.lambda$fingerprintInputFiles$3(CaptureStateBeforeExecutionStep.java:192)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.visitInputFileProperties(ExecuteActionsTaskExecuter.java:317)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.fingerprintInputFiles(CaptureStateBeforeExecutionStep.java:188)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.captureExecutionState(CaptureStateBeforeExecutionStep.java:150)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.lambda$captureExecutionStateOp$1(CaptureStateBeforeExecutionStep.java:104)
    at org.gradle.internal.execution.steps.BuildOperationStep$1.call(BuildOperationStep.java:40)

這個問題可以可靠地重現,但它是一個相當大的項目,創建一個小的重現案例是不切實際的。

我已經嘗試了所有顯而易見的事情:干凈的源代碼檢出,干凈的重建,完全破壞所有 gradle 緩存等。鑒於每個人都在檢查我的代碼庫並嘗試在 Windows 上構建它,我懷疑這是一個 Gradle 錯誤:Gradle 無法讀取自己的內部跟蹤文件。

我能想到的唯一異常是我在失敗的模塊中使用了 JUnit 4,在其他一些(但不是全部)模塊中使用了 JUnit 5。 一些使用 JUnit 4 的模塊通過了測試。

關於這個問題的任何建議或見解?

我可以在 Gradle 6.7.1 中使用一個非常簡單的 gradle 構建來重現它,如下所示:

目錄:

gradle_test/
   build.gradle
   Main.java

構建.gradle:

apply plugin: "java"

task simple(type: JavaCompile) {
    source = "Main.java"
    classpath = files(".")
    destinationDirectory = file("build")
}

錯誤:

> Task :simple FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':simple'.
> Couldn't read file content: 'D:\gradle_test\.gradle\6.7.1\executionHistory\executionHistory.lock'.

解決方案

我不能保證這是您遇到的情況,但在我的示例構建中,錯誤似乎發生了,因為構建操作本身正在遍歷.gradle文件夾以查找源文件。

Main.java移動到src文件夾並相應地調整編譯屬性可以解決問題。

我會檢查以確保您沒有任何意外操作.gradle文件夾內容的.gradle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM