<relativePath>..</relativePath>\r
</parent>\r
<artifactId>maven-argeo-osgi-plugin</artifactId>\r
- <version>0.1.9</version>\r
+ <version>0.1.10</version>\r
<packaging>maven-plugin</packaging>\r
<name>Argeo OSGi Plugin</name>\r
\r
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;
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
newVersionArt = versionMfMain;
}
- //boolean debug = true;
+ // boolean debug = true;
boolean debug = getLog().isDebugEnabled();
if (debug && willGenerate) {
getLog().info("\n## " + artifactId);
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("<project>\n");
+ pom.append("\t<modelVersion>4.0.0</modelVersion>\n");
+ pom.append("\t<parent>\n");
+ pom.append("\t\t<groupId>" + parentGroupId + "</groupId>\n");
+ pom.append("\t\t<artifactId>" + parentArtifactId + "</artifactId>\n");
+ pom.append("\t\t<version>" + parentBaseVersion + "</version>\n");
+ pom.append("\t</parent>\n");
+ pom.append("\t<groupId>" + groupId + "</groupId>\n");
+ pom.append("\t<artifactId>" + artifactId + "</artifactId>\n");
+ pom.append("\t<packaging>" + packaging + "</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("</project>\n");
+ return pom.toString();
+ }
+
protected static class BundlePackage {
private final Artifact artifact;
private final File bundleDir;
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 {
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
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);
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
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);
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;
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(true);
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());
fileSet.setIncludes(includes);
fileSet.setExcludes(excludes);
try {
+ File manifestFile = bundlePackage.getManifestFile();
jarArchiver.addFileSet(fileSet);
// Write manifest
+ 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<dependency>\n");
bundlesPom
}
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);
}
}
-
}