]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/PackageBundlesMojo.java
Prepare releasing
[gpl/argeo-slc.git] / maven-argeo-osgi-plugin / src / main / java / org / argeo / slc / maven / plugins / osgi / PackageBundlesMojo.java
index ec61d5a8761c52e6030b6fcd01d26c6be66fd7ba..80074cb2e51d4ea81be9570c26ceebeb268e94c7 100644 (file)
@@ -8,6 +8,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.jar.Attributes;
 
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.codehaus.plexus.archiver.jar.JarArchiver;
@@ -22,38 +24,18 @@ import org.codehaus.plexus.archiver.util.DefaultFileSet;
 public class PackageBundlesMojo extends AbstractBundlesPackagerMojo {
 
        public void execute() throws MojoExecutionException, MojoFailureException {
-               StringBuffer bundlesPom = new StringBuffer();
-               // not using append() systematically for the sake of clarity
-               bundlesPom.append("<project>\n");
-               bundlesPom.append("\t<modelVersion>4.0.0</modelVersion>\n");
-               bundlesPom.append("\t<parent>\n");
-               bundlesPom.append("\t\t<groupId>"
-                               + project.getParentArtifact().getGroupId() + "</groupId>\n");
-               bundlesPom.append("\t\t<artifactId>"
-                               + project.getParentArtifact().getArtifactId()
-                               + "</artifactId>\n");
-               bundlesPom
-                               .append("\t\t<version>"
-                                               + project.getParentArtifact().getBaseVersion()
-                                               + "</version>\n");
-               bundlesPom.append("\t</parent>\n");
-               bundlesPom
-                               .append("\t<groupId>" + project.getGroupId() + "</groupId>\n");
-               bundlesPom.append("\t<artifactId>" + bundlesPomArtifactId
-                               + "</artifactId>\n");
-               bundlesPom.append("\t<packaging>pom</packaging>\n");
+               StringBuffer bundlesPom = createPomFileHeader(project
+                               .getParentArtifact().getGroupId(), project.getParentArtifact()
+                               .getArtifactId(), project.getParentArtifact().getBaseVersion(),
+                               project.getGroupId(), bundlesPomArtifactId, "pom");
                bundlesPom.append("\t<dependencies>\n");
 
-               List bundlePackages = analyze();
+               List bundlePackages = analyze(true);
 
                for (int i = 0; i < bundlePackages.size(); i++) {
                        AbstractBundlesPackagerMojo.BundlePackage bundlePackage = (BundlePackage) bundlePackages
                                        .get(i);
 
-                       File manifestFile = new File(bundlePackage.getPackageFile()
-                                       .getPath()
-                                       + ".MF");
-
                        // Package as jar
                        JarArchiver jarArchiver = new JarArchiver();
                        jarArchiver.setDestFile(bundlePackage.getPackageFile());
@@ -63,11 +45,14 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo {
                        String[] excludes = { "**/.svn", "**/.svn/**" };
                        fileSet.setIncludes(includes);
                        fileSet.setExcludes(excludes);
+                       
+                       FileOutputStream manifestOut = null;
                        try {
+                               File manifestFile = bundlePackage.getManifestFile();
                                jarArchiver.addFileSet(fileSet);
 
                                // Write manifest
-                               FileOutputStream out = new FileOutputStream(manifestFile);
+                               manifestOut = new FileOutputStream(manifestFile);
 
                                System.out.println("\n# BUNDLE "
                                                + bundlePackage.getArtifact().getArtifactId());
@@ -79,14 +64,34 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo {
                                        System.out.println(key + ": " + value);
                                }
 
-                               bundlePackage.getManifest().write(out);
-                               out.close();
-                               jarArchiver.setManifest(manifestFile);
+                               bundlePackage.getManifest().write(manifestOut);
 
+                               // Write jar
+                               jarArchiver.setManifest(manifestFile);
                                jarArchiver.createArchive();
                        } catch (Exception e) {
                                throw new MojoExecutionException("Could not package bundle "
                                                + bundlePackage.getBundleDir(), e);
+                       }finally{
+                               IOUtils.closeQuietly(manifestOut);
+                       }
+
+                       // Write bundle POM
+                       File pomFile = bundlePackage.getPomFile();
+                       StringBuffer pomBuf = createPomFileHeader(project
+                                       .getParentArtifact().getGroupId(), project
+                                       .getParentArtifact().getArtifactId(), project
+                                       .getParentArtifact().getBaseVersion(), bundlePackage
+                                       .getArtifact().getGroupId(), bundlePackage.getArtifact()
+                                       .getArtifactId(), "jar");
+                       String pomStr = closePomFile(pomBuf);
+                       try {
+                               FileUtils.writeStringToFile(pomFile, pomStr);
+                       } catch (IOException e) {
+                               throw new MojoExecutionException(
+                                               "Could not write pom for bundle "
+                                                               + bundlePackage.getArtifact().getArtifactId(),
+                                               e);
                        }
 
                        // update dependencies POM
@@ -107,16 +112,13 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo {
                }
 
                bundlesPom.append("\t</dependencies>\n");
-               bundlesPom.append("</project>\n");
+               String bundlePomStr = closePomFile(bundlesPom);
 
                try {
-                       FileWriter writer = new FileWriter(bundlesPomFile());
-                       writer.write(bundlesPom.toString());
-                       writer.close();
+                       FileUtils.writeStringToFile(bundlesPomFile(), bundlePomStr);
                } catch (IOException e) {
                        throw new MojoExecutionException("Could not write dependency pom",
                                        e);
                }
        }
-
 }