Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.5.2
-
None
Description
I get the following warnings at the end of Maven build:
Cleaning up unclosed ZipFile for archive C:\...foo-0.2.0-SNAPSHOT.zip
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:
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)
Hope this helps, somehow.