From fb92d9407034165628d4acc675870be8421139ad Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 4 Jun 2009 08:00:40 +0000 Subject: [PATCH] Generate pom for created artifacts git-svn-id: https://svn.argeo.org/slc/trunk/maven@2455 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- maven-argeo-osgi-plugin/pom.xml | 2 +- .../osgi/AbstractBundlesPackagerMojo.java | 54 +++++++++++++++++- .../maven/plugins/osgi/DeployBundlesMojo.java | 10 +++- .../plugins/osgi/InstallBundlesMojo.java | 10 +++- .../plugins/osgi/PackageBundlesMojo.java | 55 +++++++++---------- 5 files changed, 96 insertions(+), 35 deletions(-) diff --git a/maven-argeo-osgi-plugin/pom.xml b/maven-argeo-osgi-plugin/pom.xml index 5998beedd..a4a8db4d6 100644 --- a/maven-argeo-osgi-plugin/pom.xml +++ b/maven-argeo-osgi-plugin/pom.xml @@ -7,7 +7,7 @@ .. maven-argeo-osgi-plugin - 0.1.9 + 0.1.10 maven-plugin Argeo OSGi Plugin diff --git a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/AbstractBundlesPackagerMojo.java b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/AbstractBundlesPackagerMojo.java index acc894107..53f686099 100644 --- a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/AbstractBundlesPackagerMojo.java +++ b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/AbstractBundlesPackagerMojo.java @@ -3,6 +3,7 @@ package org.argeo.slc.maven.plugins.osgi; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; +import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -14,8 +15,12 @@ import java.util.jar.Manifest; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.metadata.ArtifactMetadata; +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Writer; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; /** * @author mbaudier @@ -162,7 +167,7 @@ public abstract class AbstractBundlesPackagerMojo extends AbstractOsgiMojo { newVersionArt = versionMfMain; } - //boolean debug = true; + // boolean debug = true; boolean debug = getLog().isDebugEnabled(); if (debug && willGenerate) { getLog().info("\n## " + artifactId); @@ -199,6 +204,45 @@ public abstract class AbstractBundlesPackagerMojo extends AbstractOsgiMojo { bundlesPomArtifactId, project.getVersion(), "pom"); } + protected StringBuffer createPomFileHeader(String parentGroupId, + String parentArtifactId, String parentBaseVersion, String groupId, + String artifactId, String packaging) { + StringBuffer pom = new StringBuffer(); + // not using append() systematically for the sake of clarity + pom.append("\n"); + pom.append("\t4.0.0\n"); + pom.append("\t\n"); + pom.append("\t\t" + parentGroupId + "\n"); + pom.append("\t\t" + parentArtifactId + "\n"); + pom.append("\t\t" + parentBaseVersion + "\n"); + pom.append("\t\n"); + pom.append("\t" + groupId + "\n"); + pom.append("\t" + artifactId + "\n"); + pom.append("\t" + packaging + "\n"); + return pom; + + // TODO: use the Model object e.g.: (from install plugin) +// Model model = new Model(); +// model.setModelVersion( "4.0.0" ); +// model.setGroupId( groupId ); +// model.setArtifactId( artifactId ); +// model.setVersion( version ); +// model.setPackaging( packaging ); +// model.setDescription( "POM was created from install:install-file" ); +// fw = new FileWriter( tempFile ); +// tempFile.deleteOnExit(); +// new MavenXpp3Writer().write( fw, model ); +// ArtifactMetadata metadata = new ProjectArtifactMetadata( artifact, tempFile ); +// artifact.addMetadata( metadata ); + + } + + /** Simple close the project tag */ + protected String closePomFile(StringBuffer pom) { + pom.append("\n"); + return pom.toString(); + } + protected static class BundlePackage { private final Artifact artifact; private final File bundleDir; @@ -229,6 +273,14 @@ public abstract class AbstractBundlesPackagerMojo extends AbstractOsgiMojo { public Manifest getManifest() { return manifest; } + + public File getManifestFile() { + return new File(getPackageFile().getPath() + ".MF"); + } + + public File getPomFile() { + return new File(getPackageFile().getPath() + ".pom.xml"); + } } protected Manifest readManifest(File file) throws IOException { diff --git a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/DeployBundlesMojo.java b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/DeployBundlesMojo.java index 0483b40f4..170469a7c 100644 --- a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/DeployBundlesMojo.java +++ b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/DeployBundlesMojo.java @@ -3,10 +3,12 @@ package org.argeo.slc.maven.plugins.osgi; import java.io.File; import java.util.List; +import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.deployer.ArtifactDeployer; import org.apache.maven.artifact.deployer.ArtifactDeploymentException; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; /** * @goal deploy-bundles @@ -24,8 +26,12 @@ public class DeployBundlesMojo extends AbstractBundlesPackagerMojo { AbstractBundlesPackagerMojo.BundlePackage bundlePackage = (BundlePackage) bundlePackages .get(i); try { - deployer.deploy(bundlePackage.getPackageFile(), bundlePackage - .getArtifact(), deploymentRepository, local); + Artifact artifact = bundlePackage.getArtifact(); + ProjectArtifactMetadata metadata = new ProjectArtifactMetadata( + artifact, bundlePackage.getPomFile()); + artifact.addMetadata(metadata); + deployer.deploy(bundlePackage.getPackageFile(), artifact, + deploymentRepository, local); } catch (ArtifactDeploymentException e) { throw new MojoExecutionException("Could not deploy bundle " + bundlePackage.getBundleDir(), e); diff --git a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/InstallBundlesMojo.java b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/InstallBundlesMojo.java index d3b4dfa56..e4924da20 100644 --- a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/InstallBundlesMojo.java +++ b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/InstallBundlesMojo.java @@ -3,10 +3,12 @@ package org.argeo.slc.maven.plugins.osgi; import java.io.File; import java.util.List; +import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.installer.ArtifactInstallationException; import org.apache.maven.artifact.installer.ArtifactInstaller; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; /** * @goal install-bundles @@ -24,8 +26,12 @@ public class InstallBundlesMojo extends AbstractBundlesPackagerMojo { AbstractBundlesPackagerMojo.BundlePackage bundlePackage = (BundlePackage) bundlePackages .get(i); try { - installer.install(bundlePackage.getPackageFile(), bundlePackage - .getArtifact(), local); + Artifact artifact = bundlePackage.getArtifact(); + ProjectArtifactMetadata metadata = new ProjectArtifactMetadata( + artifact, bundlePackage.getPomFile()); + artifact.addMetadata(metadata); + installer.install(bundlePackage.getPackageFile(), artifact, + local); } catch (ArtifactInstallationException e) { throw new MojoExecutionException("Could not install bundle " + bundlePackage.getBundleDir(), e); diff --git a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/PackageBundlesMojo.java b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/PackageBundlesMojo.java index abb5fcf1b..46598ead6 100644 --- a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/PackageBundlesMojo.java +++ b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/PackageBundlesMojo.java @@ -8,6 +8,7 @@ import java.util.Iterator; import java.util.List; import java.util.jar.Attributes; +import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.codehaus.plexus.archiver.jar.JarArchiver; @@ -22,26 +23,10 @@ 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("\n"); - bundlesPom.append("\t4.0.0\n"); - bundlesPom.append("\t\n"); - bundlesPom.append("\t\t" - + project.getParentArtifact().getGroupId() + "\n"); - bundlesPom.append("\t\t" - + project.getParentArtifact().getArtifactId() - + "\n"); - bundlesPom - .append("\t\t" - + project.getParentArtifact().getBaseVersion() - + "\n"); - bundlesPom.append("\t\n"); - bundlesPom - .append("\t" + project.getGroupId() + "\n"); - bundlesPom.append("\t" + bundlesPomArtifactId - + "\n"); - bundlesPom.append("\tpom\n"); + StringBuffer bundlesPom = createPomFileHeader(project + .getParentArtifact().getGroupId(), project.getParentArtifact() + .getArtifactId(), project.getParentArtifact().getBaseVersion(), + project.getGroupId(), bundlesPomArtifactId, "pom"); bundlesPom.append("\t\n"); List bundlePackages = analyze(true); @@ -50,10 +35,6 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo { 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()); @@ -64,6 +45,7 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo { fileSet.setIncludes(includes); fileSet.setExcludes(excludes); try { + File manifestFile = bundlePackage.getManifestFile(); jarArchiver.addFileSet(fileSet); // Write manifest @@ -89,6 +71,24 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo { + bundlePackage.getBundleDir(), e); } + // 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 bundlesPom.append("\t\t\n"); bundlesPom @@ -107,16 +107,13 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo { } bundlesPom.append("\t\n"); - bundlesPom.append("\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); } } - } -- 2.39.2