ITADN

Merging service files fails with invalid timestamp

#1924Closedphilipp94831 创建于 2026-02-18
bug
P
philipp94831commented
### Expected and Results I am creating a shadow jar and merge service files. This works just fine with version 8.3.9 of the plugin: ``` plugins { `java-library` id("com.gradleup.shadow") version "8.3.9" } java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } val gpr_user: String by project val gpr_key: String by project repositories { mavenCentral() maven { url = uri("https://maven.pkg.github.com/zolyfarkas/avro") credentials { username = gpr_user password = gpr_key } } } dependencies { val extendedAvroVersion: String by project api(group = "org.apache.avro", name = "avro", version = extendedAvroVersion) api(group = "org.spf4j", name = "avro-logical-types-fork", version = "1.2") { exclude(group = "org.apache.avro") } } tasks.shadowJar { relocate("org.apache.avro", "shaded.org.apache.avro") relocate("org.spf4j.avro", "shaded.org.spf4j.avro") dependencies { // only include shaded avro in jar include { it.moduleGroup == "org.apache.avro" || it.moduleGroup == "org.spf4j" } } mergeServiceFiles() } ``` However, if I try to upgrade to version 9.3.1 of the plugin, it fails ``` Caused by: org.gradle.api.GradleException: Could not add zip entry '...\.gradle\caches\modules-2\files-2.1\org.apache.avro\avro\1.10.0.12p\fb6ebd0a619373a5e7d7506701f6896d20770c92\avro-1.10.0.12p.jar!META-INF/services/com.fasterxml.jackson.core.JsonFactory' to ZIP '...\build\libs\enhanced-avro-2.2.2-SNAPSHOT-all.jar'. at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$StreamAction.processFile(ShadowCopyAction.kt:169) at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator.lambda$execute$0(NormalizingCopyActionDecorator.java:72) at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator.lambda$execute$0(DuplicateHandlingCopyActionDecorator.java:70) at org.gradle.api.internal.file.copy.CopyFileVisitorImpl.processFile(CopyFileVisitorImpl.java:68) at org.gradle.api.internal.file.copy.CopyFileVisitorImpl.visitFile(CopyFileVisitorImpl.java:52) at org.gradle.api.internal.file.collections.FilteredMinimalFileTree$2.visitFile(FilteredMinimalFileTree.java:95) at org.gradle.api.internal.file.archive.ZipFileTree.lambda$visit$0(ZipFileTree.java:107) at org.gradle.api.internal.file.archive.DefaultDecompressionCoordinator.lambda$exclusiveAccessTo$0(DefaultDecompressionCoordinator.java:57) at org.gradle.cache.internal.ProducerGuard$AdaptiveProducerGuard.guardByKey(ProducerGuard.java:97) at org.gradle.api.internal.file.archive.DefaultDecompressionCoordinator.lambda$exclusiveAccessTo$1(DefaultDecompressionCoordinator.java:56) at org.gradle.cache.internal.DefaultCacheCoordinator.lambda$toSupplier$2(DefaultCacheCoordinator.java:241) at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.withFileLock(LockOnDemandCrossProcessCacheAccess.java:90) at org.gradle.cache.internal.DefaultCacheCoordinator.withFileLock(DefaultCacheCoordinator.java:231) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.withFileLock(DefaultPersistentDirectoryStore.java:152) at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.withFileLock(DefaultCacheFactory.java:208) at org.gradle.api.internal.file.archive.DefaultDecompressionCoordinator.exclusiveAccessTo(DefaultDecompressionCoordinator.java:54) at org.gradle.api.internal.file.archive.ZipFileTree.visit(ZipFileTree.java:95) at org.gradle.api.internal.file.collections.FilteredMinimalFileTree.visit(FilteredMinimalFileTree.java:84) at org.gradle.api.internal.file.collections.FileTreeAdapter.visit(FileTreeAdapter.java:110) at org.gradle.api.internal.file.CompositeFileTree.visit(CompositeFileTree.java:108) at org.gradle.api.internal.file.copy.CopySpecActionImpl.execute(CopySpecActionImpl.java:43) at org.gradle.api.internal.file.copy.CopySpecActionImpl.execute(CopySpecActionImpl.java:25) at org.gradle.api.internal.file.copy.DefaultCopySpec$DefaultCopySpecResolver.walk(DefaultCopySpec.java:808) at org.gradle.api.internal.file.copy.DefaultCopySpec$DefaultCopySpecResolver.walk(DefaultCopySpec.java:810) at org.gradle.api.internal.file.copy.DefaultCopySpec.walk(DefaultCopySpec.java:543) at org.gradle.api.internal.file.copy.CopySpecBackedCopyActionProcessingStream.process(CopySpecBackedCopyActionProcessingStream.java:42) at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator.lambda$execute$1(DuplicateHandlingCopyActionDecorator.java:50) at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator.lambda$execute$1(NormalizingCopyActionDecorator.java:64) at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction.execute(ShadowCopyAction.kt:68) at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator.execute(NormalizingCopyActionDecorator.java:63) at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator.execute(DuplicateHandlingCopyActionDecorator.java:50) at org.gradle.api.internal.file.copy.CopyActionExecuter.execute(CopyActionExecuter.java:48) at org.gradle.api.tasks.AbstractCopyTask.copy(AbstractCopyTask.java:146) at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.copy(ShadowJar.kt:471) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:259) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:244) at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:227) at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:210) at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:176) at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:110) at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:47) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:64) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:61) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:61) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:42) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:75) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:51) at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:29) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.executeMutable(RemovePreviousOutputsStep.java:70) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.executeMutable(RemovePreviousOutputsStep.java:40) at org.gradle.internal.execution.steps.MutableStep.execute(MutableStep.java:25) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:62) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27) at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:69) at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:46) at org.gradle.internal.execution.steps.ResolveInputChangesStep.executeMutable(ResolveInputChangesStep.java:39) at org.gradle.internal.execution.steps.ResolveInputChangesStep.executeMutable(ResolveInputChangesStep.java:28) at org.gradle.internal.execution.steps.MutableStep.execute(MutableStep.java:25) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:192) at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:148) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:104) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:104) at org.gradle.internal.Try$Success.map(Try.java:170) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:88) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:75) at org.gradle.internal.Either$Left.fold(Either.java:116) at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:49) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:75) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:53) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:53) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:35) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49) at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27) at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71) at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39) at org.gradle.internal.execution.steps.ResolveChangesStep.executeMutable(ResolveChangesStep.java:63) at org.gradle.internal.execution.steps.ResolveChangesStep.executeMutable(ResolveChangesStep.java:34) at org.gradle.internal.execution.steps.MutableStep.execute(MutableStep.java:25) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:64) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:42) at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:77) at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:46) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:133) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:64) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23) at org.gradle.internal.execution.steps.HandleStaleOutputsStep.executeMutable(HandleStaleOutputsStep.java:77) at org.gradle.internal.execution.steps.HandleStaleOutputsStep.executeMutable(HandleStaleOutputsStep.java:43) at org.gradle.internal.execution.steps.MutableStep.execute(MutableStep.java:25) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35) at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:305) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22) at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40) at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:31) at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:68) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:132) ... 61 more Caused by: org.gradle.api.GradleException: Invalid Timestamp -272777233000 for 'zip entry '...\.gradle\caches\modules-2\files-2.1\org.apache.avro\avro\1.10.0.12p\fb6ebd0a619373a5e7d7506701f6896d20770c92\avro-1.10.0.12p.jar!META-INF/services/com.fasterxml.jackson.core.JsonFactory''. at org.gradle.api.internal.file.AbstractFileTreeElement.validateTimeStamps(AbstractFileTreeElement.java:95) at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:77) at org.gradle.api.internal.file.archive.AbstractArchiveFileTreeElement.getFile(AbstractArchiveFileTreeElement.java:84) at org.gradle.api.internal.file.copy.DefaultFileCopyDetails.getFile(DefaultFileCopyDetails.java:94) at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$StreamAction.transform(ShadowCopyAction.kt:312) at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$StreamAction.visitFile(ShadowCopyAction.kt:193) at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$StreamAction.processFile(ShadowCopyAction.kt:166) ... 192 more ``` The issue seems to be that the service file in the [jar](https://github.com/zolyfarkas/avro/packages/731422) has a timestamp dated to year 2097. I also tried setting `isPreserveFileTimestamps` but it does not help: ``` tasks.shadowJar { relocate("org.apache.avro", "shaded.org.apache.avro") relocate("org.spf4j.avro", "shaded.org.spf4j.avro") dependencies { // only include shaded avro in jar include { it.moduleGroup == "org.apache.avro" || it.moduleGroup == "org.spf4j" } } mergeServiceFiles() isPreserveFileTimestamps = false } ``` ### Related environment and versions Gradle 9.3.1 ### Reproduction steps 1. Create Gradle project with above build.gradle.kts 2. Upgrade to plguin version 9.3.1 3. Run `gradle shadowJar` ### Anything else? _No response_
关闭于 2026-02-18 1 条评论