summaryrefslogtreecommitdiffstats
path: root/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-01-09 18:10:58 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-01-09 18:10:58 +0000
commitebbaaef8b69146cde512ed3ce34af55d68f82297 (patch)
treebb3dfe929f664d420de825731129910ac3725ada /maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java
parentaadbcc8ee91a4b2ecba60c8e71ae0393bda56301 (diff)
Add the ability to generate feature-based aggregated bundles
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@897505 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java')
-rw-r--r--maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java b/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java
index 8435691019..a90fb35e83 100644
--- a/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java
+++ b/maven-plugins/trunk/maven-bundle-plugin/src/main/java/org/apache/tuscany/maven/bundle/plugin/ModuleBundlesBuildMojo.java
@@ -256,6 +256,12 @@ public class ModuleBundlesBuildMojo extends AbstractMojo {
private boolean generateConfig = true;
/**
+ * Generate an aggregated OSGi bundle for each feature
+ * @parameter default-value="false"
+ */
+ private boolean generateAggregatedBundle = false;
+
+ /**
* @parameter default-value="true"
*/
private boolean generateBundleStart = true;
@@ -728,6 +734,12 @@ public class ModuleBundlesBuildMojo extends AbstractMojo {
generateGatewayBundle(serviceProviders);
}
+ if (useDistributionName) {
+ bundleLocations.nameMap.remove(project.getArtifactId());
+ jarNames.nameMap.remove(project.getArtifactId());
+ bundleSymbolicNames.nameMap.remove(project.getArtifactId());
+ }
+
// Generate a PDE target
if (generateTargetPlatform) {
generatePDETarget(bundleSymbolicNames, root, log);
@@ -753,6 +765,10 @@ public class ModuleBundlesBuildMojo extends AbstractMojo {
if (generateAntScript) {
generateANTPath(jarNames, root, log);
}
+
+ if (generateAggregatedBundle) {
+ generateAggregatedBundles(bundleLocations, root, log);
+ }
} catch (Exception e) {
throw new MojoExecutionException(e.getMessage(), e);
@@ -1029,6 +1045,34 @@ public class ModuleBundlesBuildMojo extends AbstractMojo {
}
}
+ private void generateAggregatedBundles(ProjectSet bundleLocations, File root, Log log) throws Exception {
+ for (Map.Entry<String, Set<String>> e : bundleLocations.nameMap.entrySet()) {
+ Set<String> locations = new HashSet<String>(e.getValue());
+ String featureName = (useDistributionName ? trim(e.getKey()) : "");
+ File feature = new File(root, "../" + featuresName + "/" + featureName);
+// String bundleFileName = "tuscany-bundle-" + featureName + ".jar";
+// if ("".equals(featureName)) {
+// bundleFileName = "tuscany-bundle.jar";
+// }
+ String bundleFileName = "tuscany-bundle.jar";
+ File bundleFile = new File(feature, bundleFileName);
+ log.info("Generating aggregated OSGi bundle: " + bundleFile);
+ File[] files = new File[locations.size()];
+ int i = 0;
+ for (String child : locations) {
+ files[i++] = new File(root, child);
+ }
+ String bundleVersion = "2.0.0";
+ String bundleName = "org.apache.tuscany.sca.bundle";
+
+// String bundleName = "org.apache.tuscany.sca.bundle." + featureName;
+// if ("".equals(featureName)) {
+// bundleName = "org.apache.tuscany.sca.bundle";
+// }
+ BundleAggregatorMojo.aggregateBundles(log, root, files, bundleFile, bundleName, bundleVersion);
+ }
+ }
+
private void generatePDETarget(ProjectSet bundleSymbolicNames, File root, Log log) throws FileNotFoundException,
IOException {
for (Map.Entry<String, Set<String>> e : bundleSymbolicNames.nameMap.entrySet()) {