将文件复制到Gradle中的rootDir [英] Copy files to rootDir in Gradle

查看:764
本文介绍了将文件复制到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆