private File readingPomFromJarFile()

in src/main/java/org/apache/maven/plugins/install/InstallFileMojo.java [273:337]


    private File readingPomFromJarFile() throws MojoExecutionException {
        File pomFile = null;

        JarFile jarFile = null;
        try {
            Pattern pomEntry = Pattern.compile("META-INF/maven/.*/pom\\.xml");

            jarFile = new JarFile(file);

            Enumeration<JarEntry> jarEntries = jarFile.entries();

            while (jarEntries.hasMoreElements()) {
                JarEntry entry = jarEntries.nextElement();

                if (pomEntry.matcher(entry.getName()).matches()) {
                    getLog().debug("Loading " + entry.getName());

                    InputStream pomInputStream = null;
                    OutputStream pomOutputStream = null;

                    try {
                        pomInputStream = jarFile.getInputStream(entry);

                        String base = file.getName();
                        if (base.indexOf('.') > 0) {
                            base = base.substring(0, base.lastIndexOf('.'));
                        }
                        pomFile = File.createTempFile(base, ".pom");

                        pomOutputStream = Files.newOutputStream(pomFile.toPath());

                        IOUtil.copy(pomInputStream, pomOutputStream);

                        pomOutputStream.close();
                        pomOutputStream = null;

                        pomInputStream.close();
                        pomInputStream = null;

                        processModel(readModel(pomFile));

                        break;
                    } finally {
                        IOUtil.close(pomInputStream);
                        IOUtil.close(pomOutputStream);
                    }
                }
            }

            if (pomFile == null) {
                getLog().info("pom.xml not found in " + file.getName());
            }
        } catch (IOException e) {
            // ignore, artifact not packaged by Maven
        } finally {
            if (jarFile != null) {
                try {
                    jarFile.close();
                } catch (IOException e) {
                    // we did our best
                }
            }
        }
        return pomFile;
    }