gradle - Getting File permissions error when exploding the cucumber-jvm.jar -
i trying create executable jar functional tests exploding dependency jars, using gradle task of type jar.
cucumber-1.1.3 1 of dependencies. using gradle 1.1 jvm 1.6 (company standards)
i following error :
org.gradle.api.gradleexception: not expand zip '/dev/shm/263985/transformer/caches/artifacts-14/filestore/info.cukes/cucumber-java/1.1.3/jar/4b389fbe494942b319518d27ae38571f477967f6/cucumber-java-1.1.3.jar'. @ org.gradle.api.internal.file.archive.zipfiletree.visit(zipfiletree.java:97) @ org.gradle.api.internal.file.collections.filetreeadapter.visit(filetreeadapter.java:96) @ org.gradle.api.internal.file.abstractfiletree$filteredfiletree.visit(abstractfiletree.java:136) @ org.gradle.api.internal.file.abstractfiletree.getfiles(abstractfiletree.java:37) @ org.gradle.api.internal.file.compositefilecollection.getfiles(compositefilecollection.java:39) @ org.gradle.api.internal.file.abstractfilecollection.iterator(abstractfilecollection.java:60) @ org.gradle.api.internal.changedetection.defaultfilesnapshotter.snapshot(defaultfilesnapshotter.java:42) @ org.gradle.api.internal.changedetection.inputfileschangeduptodaterule.create(inputfileschangeduptodaterule.java:35) @ 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.changedetection.defaulttaskartifactstaterepository$taskartifactstateimpl.isuptodate(defaulttaskartifactstaterepository.java:128) @ org.gradle.api.internal.changedetection.shortcircuittaskartifactstaterepository$shortcircuitartifactstate.isuptodate(shortcircuittaskartifactstaterepository.java:77) @ org.gradle.api.internal.changedetection.filecachebroadcasttaskartifactstaterepository$1.isuptodate(filecachebroadcasttaskartifactstaterepository.java:37) @ org.gradle.api.internal.tasks.execution.skipuptodatetaskexecuter.execute(skipuptodatetaskexecuter.java:44) @ org.gradle.api.internal.tasks.execution.validatingtaskexecuter.execute(validatingtaskexecuter.java:57) @ org.gradle.api.internal.tasks.execution.skipemptysourcefilestaskexecuter.execute(skipemptysourcefilestaskexecuter.java:41) @ org.gradle.api.internal.tasks.execution.skiptaskwithnoactionsexecuter.execute(skiptaskwithnoactionsexecuter.java:51) @ org.gradle.api.internal.tasks.execution.skiponlyiftaskexecuter.execute(skiponlyiftaskexecuter.java:52) @ org.gradle.api.internal.tasks.execution.executeatmostoncetaskexecuter.execute(executeatmostoncetaskexecuter.java:42) @ org.gradle.api.internal.abstracttask.executewithoutthrowingtaskfailure(abstracttask.java:247) @ org.gradle.execution.defaulttaskgraphexecuter.executetask(defaulttaskgraphexecuter.java:192) @ org.gradle.execution.defaulttaskgraphexecuter.doexecute(defaulttaskgraphexecuter.java:177) @ org.gradle.execution.defaulttaskgraphexecuter.execute(defaulttaskgraphexecuter.java:83) @ org.gradle.execution.selectedtaskexecutionaction.execute(selectedtaskexecutionaction.java:36) @ org.gradle.execution.defaultbuildexecuter.execute(defaultbuildexecuter.java:61) @ org.gradle.execution.defaultbuildexecuter.access$200(defaultbuildexecuter.java:23) @ org.gradle.execution.defaultbuildexecuter$2.proceed(defaultbuildexecuter.java:67) @ org.gradle.api.internal.changedetection.taskcachelockhandlingbuildexecuter$1.run(taskcachelockhandlingbuildexecuter.java:31) @ org.gradle.cache.internal.defaultcacheaccess$1.create(defaultcacheaccess.java:111) @ org.gradle.cache.internal.defaultcacheaccess.usecache(defaultcacheaccess.java:126) @ org.gradle.cache.internal.defaultcacheaccess.usecache(defaultcacheaccess.java:109) @ org.gradle.cache.internal.defaultpersistentdirectorystore.usecache(defaultpersistentdirectorystore.java:129) @ org.gradle.api.internal.changedetection.defaulttaskartifactstatecacheaccess.usecache(defaulttaskartifactstatecacheaccess.java:79) @ org.gradle.api.internal.changedetection.taskcachelockhandlingbuildexecuter.execute(taskcachelockhandlingbuildexecuter.java:29) @ org.gradle.execution.defaultbuildexecuter.execute(defaultbuildexecuter.java:61) @ org.gradle.execution.defaultbuildexecuter.access$200(defaultbuildexecuter.java:23) @ org.gradle.execution.defaultbuildexecuter$2.proceed(defaultbuildexecuter.java:67) @ org.gradle.execution.dryrunbuildexecutionaction.execute(dryrunbuildexecutionaction.java:32) @ org.gradle.execution.defaultbuildexecuter.execute(defaultbuildexecuter.java:61) @ org.gradle.execution.defaultbuildexecuter.execute(defaultbuildexecuter.java:54) @ org.gradle.initialization.defaultgradlelauncher.dobuildstages(defaultgradlelauncher.java:155) @ org.gradle.initialization.defaultgradlelauncher.dobuild(defaultgradlelauncher.java:110) @ org.gradle.initialization.defaultgradlelauncher.run(defaultgradlelauncher.java:78) @ org.gradle.launcher.cli.executebuildaction.run(executebuildaction.java:38) @ org.gradle.launcher.exec.inprocessgradlelauncheractionexecuter.execute(inprocessgradlelauncheractionexecuter.java:39) @ org.gradle.launcher.exec.inprocessgradlelauncheractionexecuter.execute(inprocessgradlelauncheractionexecuter.java:25) @ org.gradle.launcher.cli.runbuildaction.run(runbuildaction.java:50) @ org.gradle.launcher.cli.actionadapter.execute(actionadapter.java:30) @ org.gradle.launcher.cli.actionadapter.execute(actionadapter.java:22) @ org.gradle.launcher.cli.commandlineactionfactory$parseandbuildaction.execute(commandlineactionfactory.java:200) @ org.gradle.launcher.cli.commandlineactionfactory$parseandbuildaction.execute(commandlineactionfactory.java:173) @ org.gradle.launcher.cli.commandlineactionfactory$withlogging.execute(commandlineactionfactory.java:169) @ org.gradle.launcher.cli.commandlineactionfactory$withlogging.execute(commandlineactionfactory.java:138) @ org.gradle.launcher.cli.exceptionreportingaction.execute(exceptionreportingaction.java:33) @ org.gradle.launcher.cli.exceptionreportingaction.execute(exceptionreportingaction.java:22) @ org.gradle.launcher.main.doaction(main.java:48) @ org.gradle.launcher.bootstrap.entrypoint.run(entrypoint.java:45) @ org.gradle.launcher.main.main(main.java:39) @ org.gradle.launcher.bootstrap.processbootstrap.runnoexit(processbootstrap.java:50) @ org.gradle.launcher.bootstrap.processbootstrap.run(processbootstrap.java:32) @ org.gradle.launcher.gradlemain.main(gradlemain.java:26)
caused by: org.gradle.api.gradleexception: not copy zip entry /dev/shm/263985/transformer/caches/artifacts-14/filestore/info.cukes/cucumber-java/1.1.3/jar/4b389fbe494942b319518d27ae38571f477967f6/cucumber-java-1.1.3.jar!cucumber/api/java/ar/??.class '/dev/shm/263985/transformer/target/tmp/expandedarchives/cucumber-java-1.1.3.jar_6mn6efsv2arssmg9fup79f3fm5/cucumber/api/java/ar/??.class'. @ org.gradle.api.internal.file.abstractfiletreeelement.copyto(abstractfiletreeelement.java:68) @ org.gradle.api.internal.file.archive.zipfiletree$detailsimpl.getfile(zipfiletree.java:124) @ org.gradle.api.internal.file.abstractfiletree$1.visitfile(abstractfiletree.java:39) @ org.gradle.api.internal.file.abstractfiletree$filteredfiletree$1.visitfile(abstractfiletree.java:145) @ org.gradle.api.internal.file.archive.zipfiletree.visit(zipfiletree.java:90) ... 61 more
caused by: java.io.ioexception: failed set file permissions 420 on file ??.class. errno: 84 @ org.gradle.internal.nativeplatform.filesystem.libcchmod.chmod(libcchmod.java:39) @ org.gradle.internal.nativeplatform.filesystem.genericfilesystem.chmod(genericfilesystem.java:67) @ org.gradle.api.internal.file.abstractfiletreeelement.copyto(abstractfiletreeelement.java:65) ... 65 more
note: works fine when use gradle 1.1 jvm 1.7.
let me know if guys know why happening , there fix or alternatives. in advance!!
you may encountering issue we've run into. i'm not sure 100% understand it, appears when unzipping archive has read-only files in gradle can struggle. gradle attempts check zip against files has unzipped in order know if unzipping task up-to-date, , process can blow if archive has read-only files.
notice lines in stacktrace:
org.gradle.api.internal.changedetection.compositeuptodaterule.create caused by: java.io.ioexception: failed set file permissions 420 on file
not quite smoking gun, pretty strong implication. our solution (hacky, i'll admit) use following code:
def fixexpandedarchivesforlinux() { // interesting hackery fixes expandedarchives directory // avoid read-only extracted zip file contents issue. def dir = new file(builddir, "tmp/expandedarchives") filepermissions.chmodrecursively(dir, 0200) }
you can put in first allow gradle re-expand archive while checks up-to-date status.
Comments
Post a Comment