[ https://jira.codehaus.org/browse/MASSEMBLY-742?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=361892#comment-361892 ]
Dawid Weiss commented on MASSEMBLY-742: --------------------------------------- That's why I didn't implement a patch, it wasn't trivial to me what is happening with those iterator resources once the iterator is exhausted. There is an "easy" workaround to the problematic message itself (by implementing a manual finalization method that would then close the ZipFile before it gets finalized itself), but this isn't a good solution because it still leaves the timing of close() dependent on the JVM/ GC... so any open zip files remain locked until who-knows-when. I can take another stab at this, but I've had very little time recently so it may take a while :( > Unclosed ZipFile warnings when ZIP archives are included > -------------------------------------------------------- > > Key: MASSEMBLY-742 > URL: https://jira.codehaus.org/browse/MASSEMBLY-742 > Project: Maven Assembly Plugin > Issue Type: Bug > Components: dependencySet > Affects Versions: 2.5.2 > Reporter: Dawid Weiss > Assignee: Kristian Rosenvold > Priority: Minor > Fix For: 2.5.3, 2.5.4 > > Attachments: example.zip > > > I get the following warnings at the end of Maven build: > {code} > Cleaning up unclosed ZipFile for archive C:\...foo-0.2.0-SNAPSHOT.zip > {code} > These warnings originate from assembly plugin, but in fact they're caused by > the fact that plexus resource abstraction opens up a ZipFile from > commons-compress, but never closes it. Commons-compress then force-closes all > such objects in finalize, emitting a warning. > I created a synthetic capture of the allocation stack in maven assembly, it's > here: > {code} > org.apache.commons.compress.archivers.zip.ZipFile.<init>(ZipFile.java:211) > org.apache.commons.compress.archivers.zip.ZipFile.<init>(ZipFile.java:193) > org.apache.commons.compress.archivers.zip.ZipFile.<init>(ZipFile.java:154) > org.codehaus.plexus.archiver.zip.PlexusIoZipFileResourceCollection.getEntries(PlexusIoZipFileResourceCollection.java:29) > org.codehaus.plexus.components.io.resources.AbstractPlexusIoArchiveResourceCollection.getResources(AbstractPlexusIoArchiveResourceCollection.java:69) > org.codehaus.plexus.components.io.resources.proxy.PlexusIoProxyResourceCollection.getResources(PlexusIoProxyResourceCollection.java:111) > org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:493) > org.codehaus.plexus.archiver.dir.DirectoryArchiver.execute(DirectoryArchiver.java:71) > org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:940) > org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver.createArchive(AssemblyProxyArchiver.java:541) > org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive(DefaultAssemblyArchiver.java:180) > org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:486) > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) > org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) > org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) > org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) > org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) > org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) > org.apache.maven.cli.MavenCli.main(MavenCli.java:158) > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > java.lang.reflect.Method.invoke(Method.java:483) > org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) > org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) > org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) > org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) > {code} > Hope this helps, somehow. -- This message was sent by Atlassian JIRA (v6.1.6#6162)