将文件复制到Gradle中的rootDir [英] Copy files to rootDir in Gradle
本文介绍了将文件复制到Gradle中的rootDir的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任务copyFilesToProjectRoot()类型:复制){
from(fileTree(dir:* some path *)){
include'*。*'
}
into('。')
}
..但不断收到此异常:
org.gradle.api.UncheckedIOException:java.io.IOException:进程无法访问文件,因为另一个进程锁定了org文件
的一部分。在org.gradle.api.internal.changedetection.DefaultHasher.hash(DefaultHasher.java:24)
(org.gradle.api)处使用gradle.util.HashUtil.createHash(HashUtil.java:65)
。 internal.changedetection.CachingHasher.hash(CachingHasher.java:44)
位于org.gradle.api.internal.changedetection.DefaultFileSnapshotter.snapshot(DefaultFileSnapshotter.java:44)
位于org.gradle.api处。 internal.changedetection.OutputFilesSnapshotter.snapshot(OutputFilesS napshotter.java:75)
at org.gradle.api.internal.changedetection.OutputFilesChangedUpToDateRule.create(OutputFilesChangedUpToDateRule.java:35)
at org.gradle.api.internal.changedetection.CompositeUpToDateRule.create( CompositeUpToDateRule.java:35)
在org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository $ HistoricExecution.calcCurrentState(DefaultTaskArtifactStateRepository.java:80)
。在org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository $ HistoricExecution.isUpToDate(DefaultTaskArtifactStateRepository.java:88)维持在org.gradle.api.internal org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository $ TaskArtifactStateImpl.isUpToDate(DefaultTaskArtifactStateRepository.java:128)
。 changedetection.ShortCircuitTaskArtifactStateRepository $ ShortCircuitArtifactState.isUpToDate(ShortCircuitTaskArtifactStateRepository.java:77)
at org.gradle.api.internal.chang edetection.FileCacheBroadcastTaskArtifactStateRepository $ 1.isUpToDate(FileCacheBroadcastTaskArtifactStateRepository.java:37)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:44)
at org.gradle.api .internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)
at org .gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
在org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:243)
at org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:192)
at org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:177)
at org.gradle .execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:83)
在org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:36)
在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter .java:70)
at org.gradle.execution.DefaultBuildExecuter.access $ 300(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter $ 2.proceed(DefaultBuildExecuter.java:80)
在org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:70)
在org.gradle。 execution.DefaultBuildExecuter.execute(Defaul tBuildExecuter.java:63)
在org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:157)
在org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
在org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:80)
在org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:42)
在org.gradle .launcher.cli.RunBuildAction.execute(RunBuildAction.java:28)
at org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:32)
at org.gradle.launcher.exec .ExceptionReportingAction.execute(ExceptionReportingAction.java:21)
在org.gradle.launcher.cli.CommandLineActionFactory $ WithLoggingAction.execute(CommandLineActionFactory.java:233)
在org.gradle.launcher.cli.CommandLineActionFactory $ WithLoggingAction.execute(CommandLineActionFactory.java:217)
at org.g radle.launcher.Main.doAction(Main.java:48)
at org.gradle.launcher.exec.EntryPoint $ 1.execute(EntryPoint.java:53)
at org.gradle.launcher.exec .EntryPoint $ 1.execute(EntryPoint.java:51)
位于org.gradle.launcher.exec.Execution.execute(Execution.java:28)
位于org.gradle.launcher.exec.EntryPoint。运行(EntryPoint.java:39)
在org.gradle.launcher.Main.main(Main.java:39)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method。
at org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:51)
at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:33)
在org.gradle.launcher.GradleMain.main(GradleMain.java:24 )
导致:java.io.IOException:进程无法访问文件,因为另一个进程已经锁定文件的一部分
在java.io.FileInputStream.readBytes(Native Method)
(FileInputStream.java:177)
at org.gradle.util.HashUtil.createHash(HashUtil.java:55)
... 50 more
关于如何使用它的任何想法?
解决方案
这似乎工作。这是使用底层的ant任务。
$ p $ 任务copyToRoot(){
doLast {
ant.copy (todir:rootDir){
fileset(dir:* some path *)
}
}}
I'm trying to copy files to the rootDir using a task like the one below...
task copyFilesToProjectRoot(type: Copy) {
from (fileTree(dir: *some path*)){
include '*.*'
}
into('.')
}
..but keep getting this exception:
org.gradle.api.UncheckedIOException: java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at org.gradle.util.HashUtil.createHash(HashUtil.java:65)
at org.gradle.api.internal.changedetection.DefaultHasher.hash(DefaultHasher.java:24)
at org.gradle.api.internal.changedetection.CachingHasher.hash(CachingHasher.java:44)
at org.gradle.api.internal.changedetection.DefaultFileSnapshotter.snapshot(DefaultFileSnapshotter.java:44)
at org.gradle.api.internal.changedetection.OutputFilesSnapshotter.snapshot(OutputFilesSnapshotter.java:75)
at org.gradle.api.internal.changedetection.OutputFilesChangedUpToDateRule.create(OutputFilesChangedUpToDateRule.java:35)
at org.gradle.api.internal.changedetection.CompositeUpToDateRule.create(CompositeUpToDateRule.java:35)
at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository$HistoricExecution.calcCurrentState(DefaultTaskArtifactStateRepository.java:80)
at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository$HistoricExecution.isUpToDate(DefaultTaskArtifactStateRepository.java:88)
at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.isUpToDate(DefaultTaskArtifactStateRepository.java:128)
at org.gradle.api.internal.changedetection.ShortCircuitTaskArtifactStateRepository$ShortCircuitArtifactState.isUpToDate(ShortCircuitTaskArtifactStateRepository.java:77)
at org.gradle.api.internal.changedetection.FileCacheBroadcastTaskArtifactStateRepository$1.isUpToDate(FileCacheBroadcastTaskArtifactStateRepository.java:37)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:44)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:243)
at org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:192)
at org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:177)
at org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:83)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:36)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:70)
at org.gradle.execution.DefaultBuildExecuter.access$300(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:80)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:70)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:63)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:157)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:80)
at org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:42)
at org.gradle.launcher.cli.RunBuildAction.execute(RunBuildAction.java:28)
at org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:32)
at org.gradle.launcher.exec.ExceptionReportingAction.execute(ExceptionReportingAction.java:21)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:233)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:217)
at org.gradle.launcher.Main.doAction(Main.java:48)
at org.gradle.launcher.exec.EntryPoint$1.execute(EntryPoint.java:53)
at org.gradle.launcher.exec.EntryPoint$1.execute(EntryPoint.java:51)
at org.gradle.launcher.exec.Execution.execute(Execution.java:28)
at org.gradle.launcher.exec.EntryPoint.run(EntryPoint.java:39)
at org.gradle.launcher.Main.main(Main.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:51)
at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:33)
at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
Caused by: java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:177)
at org.gradle.util.HashUtil.createHash(HashUtil.java:55)
... 50 more
Any ideas on how make this work?
解决方案
This seems to work. This is using the underlying ant task.
task copyToRoot(){
doLast{
ant.copy(todir:rootDir) {
fileset(dir:*some path*)
}
} }
这篇关于将文件复制到Gradle中的rootDir的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文