diff --git a/archetypes/feature/src/main/resources/archetype-resources/pom.xml b/archetypes/feature/src/main/resources/archetype-resources/pom.xml
index 2ed23cf..8636a99 100644
--- a/archetypes/feature/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/feature/src/main/resources/archetype-resources/pom.xml
@@ -36,7 +36,7 @@
true
(obr)
true
- true
+ false
true
true
diff --git a/archetypes/kar/src/main/resources/archetype-resources/pom.xml b/archetypes/kar/src/main/resources/archetype-resources/pom.xml
index 1662389..653713a 100644
--- a/archetypes/kar/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/kar/src/main/resources/archetype-resources/pom.xml
@@ -35,7 +35,7 @@
true
(obr)
true
- true
+ false
true
true
diff --git a/assemblies/features/framework/pom.xml b/assemblies/features/framework/pom.xml
index 934272b..fcb2102 100644
--- a/assemblies/features/framework/pom.xml
+++ b/assemblies/features/framework/pom.xml
@@ -333,7 +333,7 @@
30
-
+
diff --git a/demos/branding/pom.xml b/demos/branding/pom.xml
index 1cf5a71..c192af7 100644
--- a/demos/branding/pom.xml
+++ b/demos/branding/pom.xml
@@ -79,7 +79,7 @@
60
-
+
diff --git a/demos/command/pom.xml b/demos/command/pom.xml
index cab9512..c642972 100644
--- a/demos/command/pom.xml
+++ b/demos/command/pom.xml
@@ -82,7 +82,7 @@
60
-
+
diff --git a/demos/deployer/pom.xml b/demos/deployer/pom.xml
index edf560c..21ca43a 100644
--- a/demos/deployer/pom.xml
+++ b/demos/deployer/pom.xml
@@ -82,7 +82,7 @@
60
-
+
diff --git a/demos/dump/pom.xml b/demos/dump/pom.xml
index c7c1d1e..667198c 100644
--- a/demos/dump/pom.xml
+++ b/demos/dump/pom.xml
@@ -82,7 +82,7 @@
60
-
+
diff --git a/demos/web/pom.xml b/demos/web/pom.xml
index 2a5d4ee..ba077a5 100644
--- a/demos/web/pom.xml
+++ b/demos/web/pom.xml
@@ -82,7 +82,7 @@
60
-
+
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
index 14134c3..5e7fcd0 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
@@ -78,21 +78,28 @@ import static org.apache.karaf.deployer.kar.KarArtifactInstaller.FEATURE_CLASSIF
public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
/**
- * The (optional) input feature.file to extend
+ * An (optional) input feature file to extend. This is highly recommended as it is the only way to add <feature/>
+ * elements to the individual features that are generated. Note that this file is filtered using standard Maven
+ * resource interpolation, allowing attributes of the input file to be set with information such as ${project.version}
+ * from the current build.
+ *
+ * When dependencies are processed, if they are duplicated in this file, the dependency here provides the baseline
+ * information and is supplemented by additional information from the dependency.
*
* @parameter default-value="${project.basedir}/src/main/feature/feature.xml"
*/
private File inputFile;
/**
- * (wrapper) The filtered input file
+ * (wrapper) The filtered input file. This file holds the result of Maven resource interpolation and is generally
+ * not necessary to change, although it may be helpful for debugging.
*
* @parameter default-value="${project.build.directory}/feature/filteredInputFeature.xml"
*/
private File filteredInputFile;
/**
- * (wrapper) The file to generate
+ * (wrapper) The file to generate. This file is attached as a project output artifact.
*
* @parameter default-value="${project.build.directory}/feature/feature.xml"
*/
@@ -120,21 +127,42 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
private String attachmentArtifactClassifier = "features";
/**
- * If false, feature dependencies are added to the assembled feature as dependencies.
- * If true, feature dependencies xml descriptors are read and their contents added to the features descriptor under assembly.
+ * Specifies whether features dependencies of this project will be included inline of the the
+ * final output (true) or simply referenced as output artifact dependencies (false).
+ * If true, feature dependencies xml descriptors are read and their contents added to the features descriptor under assembly.
+ * If false, feature dependencies are added to the assembled feature as dependencies.
+ * Setting this value to true is especially helpful in multiproject builds where subprojects build their own features
+ * using aggregateFeatures = false, then combined with aggregateFeatures = true in an
+ * aggregation project with explicit dependencies to the child projects.
*
- * @parameter default-value="${aggregateFeatures}"
+ * @parameter default-value="false"
*/
private boolean aggregateFeatures = false;
/**
- * If present, the bundles added to the feature constructed from the dependencies will be marked with this startlevel.
+ * If present, the bundles added to the feature constructed from the dependencies will be marked with this default
+ * startlevel. If this parameter is not present, no startlevel attribute will be created. Finer resolution for specific
+ * dependencies can be obtained by specifying the dependency in the file referenced by the inputFile parameter.
*
* @parameter
*/
private Integer startLevel;
- //new
+ /**
+ * Flag indicating whether transitive dependencies should be included (true) or not (false).
+ *
+ * N.B. Note the default value of this is true, but is suboptimal in cases where specific <feature/> dependencies are
+ * provided by the inputFile parameter.
+ *
+ * @parameter default-value="true"
+ */
+ private boolean includeTransitiveDependency;
+
+
+
+ // *************************************************
+ // READ-ONLY MAVEN PLUGIN PARAMETERS
+ // *************************************************
/**
* (wrapper) The maven project.
@@ -173,14 +201,6 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
private RepositorySystemSession repoSession;
/**
- * Flag indicating whether transitive dependencies should be included
- * (true) or not (false).
- *
- * @parameter default-value="true"
- */
- private boolean includeTransitiveDependency;
-
- /**
* The project's remote repositories to use for the resolution of project dependencies.
*
* @parameter default-value="${project.remoteProjectRepositories}"
@@ -197,13 +217,34 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
*/
private List pluginRepos;
+ /**
+ * @component role="org.apache.maven.shared.filtering.MavenResourcesFiltering" role-hint="default"
+ * @required
+ * @readonly
+ */
+ protected MavenResourcesFiltering mavenResourcesFiltering;
+
+ /**
+ * @parameter expression="${session}"
+ * @required
+ * @readonly
+ */
+ protected MavenSession session;
+
+ /**
+ * @plexus.requirement role-hint="default"
+ * @component
+ * @required
+ * @readonly
+ */
+ protected MavenFileFilter mavenFileFilter;
+
//dependencies we are interested in
protected Map localDependencies;
//log of what happened during search
protected String treeListing;
-
//maven log
private Log log;
@@ -413,49 +454,58 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
// dependency change detection
/**
- * Whether to look for changed dependencies at all
+ * Master switch to look for and log changed dependencies. If this is set to true and the file referenced by
+ * dependencyCache does not exist, it will be unconditionally generated. If the file does exist, it is
+ * used to detect changes from previous builds and generate logs of those changes. In that case,
+ * failOnDependencyChange = true will cause the build to fail.
*
- * @parameter
+ * @parameter default-value="false"
*/
private boolean checkDependencyChange;
/**
- * Whether to fail on changed dependencies (default, false) or warn (true)
+ * (wrapper) Location of dependency cache. This file is generated to contain known dependencies and is generally
+ * located in SCM so that it may be used across separate developer builds. This is parameter is ignored unless
+ * checkDependencyChange is set to true.
*
- * @parameter
+ * @parameter default-value="${basedir}/src/main/history/dependencies.xml"
*/
- private boolean warnOnDependencyChange;
+ private File dependencyCache;
/**
- * Whether to show changed dependencies in log
+ * Location of filtered dependency file.
*
- * @parameter
+ * @parameter default-value="${basedir}/target/history/dependencies.xml"
+ * @readonly
*/
- private boolean logDependencyChanges;
+ private File filteredDependencyCache;
/**
- * Whether to overwrite src/main/history/dependencies.xml if it has changed
+ * Whether to fail on changed dependencies (default, true) or warn (false). This is parameter is ignored unless
+ * checkDependencyChange is set to true and dependencyCache exists to compare
+ * against.
*
- * @parameter
+ * @parameter default-value="true"
*/
- private boolean overwriteChangedDependencies;
+ private boolean failOnDependencyChange;
/**
- * (wrapper) Location of existing dependency file.
+ * Copies the contents of dependency change logs that are generated to stdout. This is parameter is ignored unless
+ * checkDependencyChange is set to true and dependencyCache exists to compare
+ * against.
*
- * @parameter expression="${basedir}/src/main/history/dependencies.xml"
- * @required
+ * @parameter default-value="false"
*/
- private File dependencyFile;
+ private boolean logDependencyChanges;
/**
- * Location of filtered dependency file.
+ * Whether to overwrite the file referenced by dependencyCache if it has changed. This is parameter is
+ * ignored unless checkDependencyChange is set to true, failOnDependencyChange
+ * is set to false and dependencyCache exists to compare against.
*
- * @parameter expression="${basedir}/target/history/dependencies.xml"
- * @required
- * @readonly
+ * @parameter default-value="false"
*/
- private File filteredDependencyFile;
+ private boolean overwriteChangedDependencies;
//filtering support
/**
@@ -466,20 +516,6 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
protected String encoding;
/**
- * @component role="org.apache.maven.shared.filtering.MavenResourcesFiltering" role-hint="default"
- * @required
- * @readonly
- */
- protected MavenResourcesFiltering mavenResourcesFiltering;
-
- /**
- * @parameter expression="${session}"
- * @required
- * @readonly
- */
- protected MavenSession session;
-
- /**
* Expression preceded with the String won't be interpolated
* \${foo} will be replaced with ${foo}
*
@@ -488,14 +524,6 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
protected String escapeString = "\\";
/**
- * @plexus.requirement role-hint="default"
- * @component
- * @required
- * @readonly
- */
- protected MavenFileFilter mavenFileFilter;
-
- /**
* System properties.
*
* @parameter
@@ -536,11 +564,11 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
}
});
- if (dependencyFile.exists()) {
+ if (dependencyCache.exists()) {
//filter dependencies file
- filter(dependencyFile, filteredDependencyFile);
+ filter(dependencyCache, filteredDependencyCache);
//read dependency types, convert to dependencies, compare.
- Features oldfeatures = readFeaturesFile(filteredDependencyFile);
+ Features oldfeatures = readFeaturesFile(filteredDependencyCache);
Feature oldFeature = oldfeatures.getFeature().get(0);
List addedBundles = new ArrayList(feature.getBundle());
@@ -581,14 +609,14 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
if (!addedBundles.isEmpty() || !removedBundles.isEmpty() || !addedDependencys.isEmpty() || !removedDependencys.isEmpty()) {
saveDependencyChanges(addedBundles, removedBundles, addedDependencys, removedDependencys, objectFactory);
if (overwriteChangedDependencies) {
- writeDependencies(features, dependencyFile);
+ writeDependencies(features, dependencyCache);
}
} else {
getLog().info(saveTreeListing());
}
} else {
- writeDependencies(features, dependencyFile);
+ writeDependencies(features, dependencyCache);
}
}
@@ -596,11 +624,11 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
protected void saveDependencyChanges(Collection addedBundles, Collection removedBundles, Collection addedDependencys, Collection removedDependencys, ObjectFactory objectFactory)
throws Exception {
- File addedFile = new File(filteredDependencyFile.getParentFile(), "dependencies.added.xml");
+ File addedFile = new File(filteredDependencyCache.getParentFile(), "dependencies.added.xml");
Features added = toFeatures(addedBundles, addedDependencys, objectFactory);
writeDependencies(added, addedFile);
- File removedFile = new File(filteredDependencyFile.getParentFile(), "dependencies.removed.xml");
+ File removedFile = new File(filteredDependencyCache.getParentFile(), "dependencies.removed.xml");
Features removed = toFeatures(removedBundles, removedDependencys, objectFactory);
writeDependencies(removed, removedFile);
@@ -620,13 +648,13 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
JaxbUtil.marshal(removed, out);
}
}
- out.write("Delete " + dependencyFile.getAbsolutePath()
+ out.write("Delete " + dependencyCache.getAbsolutePath()
+ " if you are happy with the dependency changes.");
- if (warnOnDependencyChange) {
- getLog().warn(out.toString());
- } else {
+ if (failOnDependencyChange) {
throw new MojoFailureException(out.toString());
+ } else {
+ getLog().warn(out.toString());
}
}
@@ -672,7 +700,7 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
protected String saveTreeListing() throws IOException {
- File treeListFile = new File(filteredDependencyFile.getParentFile(), "treeListing.txt");
+ File treeListFile = new File(filteredDependencyCache.getParentFile(), "treeListing.txt");
OutputStream os = new FileOutputStream(treeListFile);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
try {
diff --git a/assemblies/features/enterprise/pom.xml b/assemblies/features/enterprise/pom.xml
index 7cd6daf..d580bab 100644
--- a/assemblies/features/enterprise/pom.xml
+++ b/assemblies/features/enterprise/pom.xml
@@ -30,18 +30,194 @@
org.apache.karaf.features
enterprise
- pom
+ feature
Apache Karaf :: Assemblies :: Features :: Enterprise
${basedir}/../../../etc/appended-resources
+
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ ${geronimo.jta-spec.version}
+ provided
+
+
+ org.apache.aries.transaction
+ org.apache.aries.transaction.blueprint
+ ${aries.transaction.version}
+ provided
+
+
+ org.apache.aries.transaction
+ org.apache.aries.transaction.manager
+ ${aries.transaction.version}
+ provided
+
+
+ org.apache.aries.transaction
+ org.apache.aries.transaction.wrappers
+ ${aries.transaction.version}
+ provided
+
+
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ ${geronimo.jta-spec.version}
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-jpa_2.0_spec
+ ${geronimo.jpa-spec.version}
+ provided
+
+
+ org.apache.aries
+ org.apache.aries.util
+ ${aries.util.version}
+ provided
+
+
+ org.apache.aries.jpa
+ org.apache.aries.jpa.api
+ ${aries.jpa.version}
+ provided
+
+
+ org.apache.aries.jpa
+ org.apache.aries.jpa.blueprint.aries
+ ${aries.jpa.version}
+ provided
+
+
+ org.apache.aries.jpa
+ org.apache.aries.jpa.container
+ ${aries.jpa.version}
+ provided
+
+
+ org.apache.aries.jpa
+ org.apache.aries.jpa.container.context
+ ${aries.jpa.version}
+ provided
+
+
+
+
+ org.apache.aries
+ org.apache.aries.util
+ ${aries.util.version}
+ provided
+
+
+ org.apache.aries.jndi
+ org.apache.aries.jndi.api
+ ${aries.jndi.api.version}
+ provided
+
+
+ org.apache.aries.jndi
+ org.apache.aries.jndi.core
+ ${aries.jndi.version}
+ provided
+
+
+ org.apache.aries.jndi
+ org.apache.aries.jndi.rmi
+ ${aries.jndi.version}
+ provided
+
+
+ org.apache.aries.jndi
+ org.apache.aries.jndi.url
+ ${aries.jndi.version}
+ provided
+
+
+ org.apache.aries.jndi
+ org.apache.aries.jndi.legacy.support
+ ${aries.jndi.version}
+ provided
+
+
+
+
+ org.apache.karaf.features
+ standard
+ ${project.version}
+ features
+ xml
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.resolver.obr
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.install
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.api
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.management
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.utils
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.modeller
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.default.local.platform
+ ${aries.application.version}
+ provided
+
+
+ org.apache.aries.application
+ org.apache.aries.application.deployment.management
+ ${aries.application.version}
+ provided
+
+
+
+ org.apache.aries.application
+ org.apache.aries.application.runtime
+ ${aries.application.version}
+ provided
+
+
+
org.apache.karaf.tooling
karaf-maven-plugin
+ true
@@ -51,6 +227,9 @@
features-generate-descriptor
+
+ false
+
diff --git a/assemblies/features/spring/pom.xml b/assemblies/features/spring/pom.xml
index 60068fa..f9c59e0 100644
--- a/assemblies/features/spring/pom.xml
+++ b/assemblies/features/spring/pom.xml
@@ -30,7 +30,7 @@
org.apache.karaf.features
spring
- pom
+ feature
Apache Karaf :: Assemblies :: Features :: Spring
Spring Support
@@ -39,6 +39,301 @@
+
+ org.apache.karaf.features
+ standard
+ ${project.version}
+ features
+ xml
+ provided
+
+
+
+ org.apache.servicemix.bundles
+ org.apache.servicemix.bundles.aopalliance
+ ${aopalliance.bundle.version}
+ provided
+
+
+ org.springframework
+ spring-core
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-asm
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-expression
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-beans
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-aop
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-context-support
+ ${spring.version}
+ provided
+
+
+ org.apache.karaf.deployer
+ org.apache.karaf.deployer.spring
+ ${project.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-aspects
+ ${spring.version}
+ provided
+
+
+
+
+ org.apache.servicemix.bundles
+ org.apache.servicemix.bundles.cglib
+ ${cglib.bundle.version}
+ provided
+
+
+ org.springframework.osgi
+ spring-osgi-io
+ ${spring.osgi.version}
+ provided
+
+
+ org.springframework.osgi
+ spring-osgi-core
+ ${spring.osgi.version}
+ provided
+
+
+ org.springframework.osgi
+ spring-osgi-extender
+ ${spring.osgi.version}
+ provided
+
+
+ org.springframework.osgi
+ spring-osgi-annotation
+ ${spring.osgi.version}
+ provided
+
+
+ org.apache.karaf.deployer
+ org.apache.karaf.deployer.spring
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.bundle
+ org.apache.karaf.bundle.springstate
+ ${project.version}
+ provided
+
+
+
+
+ org.springframework.osgi
+ spring-osgi-web
+ ${spring.osgi.version}
+ provided
+
+
+ org.springframework
+ org.springframework.core
+
+
+
+
+
+
+ org.springframework
+ spring-instrument
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-jdbc
+ ${spring.version}
+ provided
+
+
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ ${geronimo.jta-spec.version}
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-jms_1.1_spec
+ ${geronimo.jms-spec.version}
+ provided
+
+
+ org.springframework
+ spring-jms
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-tx
+ ${spring.version}
+ provided
+
+
+
+
+ commons-beanutils
+ commons-beanutils
+ ${commons-beanutils.version}
+ provided
+
+
+ org.springframework
+ spring-struts
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-test
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-orm
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-oxm
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-tx
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+ provided
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+ provided
+
+
+
+
+ org.springframework
+ spring-webmvc-portlet
+ ${spring.version}
+ provided
+
+
+
+
+ org.eclipse.gemini.blueprint
+ gemini-blueprint-io
+ ${gemini.blueprint.version}
+ provided
+
+
+ org.eclipse.gemini.blueprint
+ gemini-blueprint-core
+ ${gemini.blueprint.version}
+ provided
+
+
+ org.springframework
+ org.springframework.core
+
+
+ org.springframework
+ org.springframework.aop
+
+
+ org.springframework
+ org.springframework.beans
+
+
+ org.springframework
+ org.springframework.context
+
+
+
+
+ org.eclipse.gemini.blueprint
+ gemini-blueprint-extender
+ ${gemini.blueprint.version}
+ provided
+
+
+ org.springframework
+ org.springframework.core
+
+
+ org.springframework
+ org.springframework.aop
+
+
+ org.springframework
+ org.springframework.beans
+
+
+ org.springframework
+ org.springframework.context
+
+
+
@@ -46,6 +341,7 @@
org.apache.karaf.tooling
karaf-maven-plugin
+ true
30
@@ -56,6 +352,9 @@
features-generate-descriptor
+
+ false
+
diff --git a/assemblies/features/standard/pom.xml b/assemblies/features/standard/pom.xml
index 1b51b07..929512a 100644
--- a/assemblies/features/standard/pom.xml
+++ b/assemblies/features/standard/pom.xml
@@ -30,7 +30,7 @@
org.apache.karaf.features
standard
- pom
+ feature
Apache Karaf :: Assemblies :: Features :: Standard
Standard providing core Karaf features
@@ -38,11 +38,601 @@
${basedir}/../../../../etc/appended-resources
+
+
+
+ org.apache.karaf.shell
+ org.apache.karaf.shell.console
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.features
+ org.apache.karaf.features.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.features
+ org.apache.karaf.features.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.instance
+ org.apache.karaf.instance.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.instance
+ org.apache.karaf.instance.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.jaas
+ org.apache.karaf.jaas.modules
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.jaas
+ org.apache.karaf.jaas.config
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.jaas
+ org.apache.karaf.jaas.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.diagnostic
+ org.apache.karaf.diagnostic.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.diagnostic
+ org.apache.karaf.diagnostic.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.log
+ org.apache.karaf.log.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.log
+ org.apache.karaf.log.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.service
+ org.apache.karaf.service.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.service
+ org.apache.karaf.service.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.dev
+ org.apache.karaf.dev.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.dev
+ org.apache.karaf.dev.command
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.aries.blueprint
+ org.apache.aries.blueprint.annotation.impl
+ ${aries.blueprint.annotation.impl.version}
+ provided
+
+
+ org.apache.commons
+ commons-jexl
+ ${commons-jexl.version}
+ provided
+
+
+ org.ow2.asm
+ asm-all
+ ${asm.version}
+ provided
+
+
+
+
+ org.apache.karaf.wrapper
+ org.apache.karaf.wrapper.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.wrapper
+ org.apache.karaf.wrapper.commands
+ ${project.version}
+ provided
+
+
+
+
+ commons-lang
+ commons-lang
+ ${commons-lang.version}
+ provided
+
+
+ commons-collections
+ commons-collections
+ ${commons-collections.version}
+ provided
+
+
+ org.apache.felix
+ org.osgi.service.obr
+ ${felix.obr.version}
+ provided
+
+
+ org.apache.felix
+ org.apache.felix.bundlerepository
+ ${felix.bundlerepository.version}
+ provided
+
+
+ org.apache.karaf.obr
+ org.apache.karaf.obr.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.obr
+ org.apache.karaf.obr.command
+ ${project.version}
+ provided
+
+
+ org.ops4j.pax.swissbox
+ pax-swissbox-lifecycle
+ ${pax.swissbox.version}
+ provided
+
+
+ org.ops4j.pax.swissbox
+ pax-swissbox-tracker
+ ${pax.swissbox.version}
+ provided
+
+
+ org.ops4j.pax.url
+ pax-url-obr
+ ${pax.url.version}
+ provided
+
+
+ org.apache.karaf.features
+ org.apache.karaf.features.obr
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.karaf.config
+ org.apache.karaf.config.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.config
+ org.apache.karaf.config.command
+ ${project.version}
+ provided
+
+
+
+
+ org.eclipse.equinox
+ region
+ ${equinox.region.version}
+ provided
+
+
+ org.apache.karaf.region
+ org.apache.karaf.region.persist
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.region
+ org.apache.karaf.region.commands
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.servicemix.specs
+ org.apache.servicemix.specs.activation-api-1.1
+ ${servicemix.specs.version}
+ provided
+
+
+ ${servlet.spec.groupId}
+ ${servlet.spec.artifactId}
+ ${servlet.spec.version}
+ provided
+
+
+ javax.mail
+ mail
+ ${javax.mail.version}
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-jta_1.1_spec
+ ${geronimo.jta-spec.version}
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-annotation_1.0_spec
+ ${geronimo.annotation-spec.version}
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-jaspic_1.0_spec
+ ${geronimo.jaspic-spec.version}
+ provided
+
+
+ org.eclipse.jetty.aggregate
+ jetty-all-server
+ ${jetty.version}
+ provided
+
+
+
+
+ org.apache.karaf.package
+ org.apache.karaf.package.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.package
+ org.apache.karaf.package.command
+ ${project.version}
+ provided
+
+
+
+
+ org.ops4j.pax.web
+ pax-web-api
+ ${pax.web.version}
+ provided
+
+
+ org.ops4j.pax.web
+ pax-web-spi
+ ${pax.web.version}
+ provided
+
+
+ org.ops4j.pax.web
+ pax-web-runtime
+ ${pax.web.version}
+ provided
+
+
+ org.ops4j.pax.web
+ pax-web-jetty
+ ${pax.web.version}
+ provided
+
+
+ org.apache.karaf.http
+ org.apache.karaf.http.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.http
+ org.apache.karaf.http.command
+ ${project.version}
+ provided
+
+
+
+
+ org.ops4j.pax.web
+ pax-web-jsp
+ ${pax.web.version}
+ provided
+
+
+ org.ops4j.pax.web
+ pax-web-extender-whiteboard
+ ${pax.web.version}
+ provided
+
+
+
+
+ org.ops4j.pax.web
+ pax-web-extender-war
+ ${pax.web.version}
+ provided
+
+
+ org.ops4j.pax.web
+ pax-web-deployer
+ ${pax.web.version}
+ provided
+
+
+ org.ops4j.pax.url
+ pax-url-war
+ ${pax.url.version}
+ provided
+
+
+ org.ops4j.pax.url
+ pax-url-commons
+ ${pax.url.version}
+ provided
+
+
+ org.ops4j.pax.swissbox
+ pax-swissbox-bnd
+ ${pax.swissbox.version}
+ provided
+
+
+ org.ops4j.pax.swissbox
+ pax-swissbox-property
+ ${pax.swissbox.version}
+ provided
+
+
+ biz.aQute
+ bndlib
+ ${bndlib.version}
+ provided
+
+
+ org.apache.karaf.web
+ org.apache.karaf.web.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.web
+ org.apache.karaf.web.commands
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.karaf.kar
+ org.apache.karaf.kar.core
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.kar
+ org.apache.karaf.kar.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.deployer
+ org.apache.karaf.deployer.kar
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.felix
+ org.apache.felix.metatype
+ ${felix.metatype.version}
+ provided
+
+
+ org.apache.karaf.webconsole
+ org.apache.karaf.webconsole.branding
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.webconsole
+ org.apache.karaf.webconsole.console
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.karaf.webconsole
+ org.apache.karaf.webconsole.instance
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.webconsole
+ org.apache.karaf.webconsole.features
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.webconsole
+ org.apache.karaf.webconsole.gogo
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.webconsole
+ org.apache.karaf.webconsole.http
+ ${project.version}
+ provided
+
+
+ org.apache.felix
+ org.apache.felix.webconsole.plugins.event
+ ${felix.eventadmin-plugin.version}
+ provided
+
+
+
+
+ org.apache.mina
+ mina-core
+ ${mina.version}
+ provided
+
+
+ org.apache.sshd
+ sshd-core
+ ${sshd.version}
+ provided
+
+
+ org.apache.karaf.shell
+ org.apache.karaf.shell.ssh
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.karaf.management
+ org.apache.karaf.management.server
+ ${project.version}
+ provided
+
+
+ org.apache.aries.jmx
+ org.apache.aries.jmx.api
+ ${aries.jmx.version}
+ provided
+
+
+ org.apache.aries.jmx
+ org.apache.aries.jmx.core
+ ${aries.jmx.version}
+ provided
+
+
+ org.apache.aries.jmx
+ org.apache.aries.jmx.blueprint
+ ${aries.jmx.version}
+ provided
+
+
+ org.apache.aries.jmx
+ org.apache.aries.jmx.whiteboard
+ ${aries.jmx.version}
+ provided
+
+
+
+
+ org.apache.karaf.scheduler
+ org.apache.karaf.scheduler.core
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.felix
+ org.apache.felix.eventadmin
+ ${felix.eventadmin.version}
+ provided
+
+
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+ provided
+
+
+ commons-lang
+ commons-lang
+ ${commons-lang.version}
+ provided
+
+
+ org.apache.servicemix.bundles
+ org.apache.servicemix.bundles.jasypt
+ ${jasypt.bundle.version}
+ provided
+
+
+ org.apache.karaf.jaas
+ org.apache.karaf.jaas.jasypt
+ ${project.version}
+ provided
+
+
+
+
+ org.apache.felix
+ org.apache.felix.metatype
+ ${felix.metatype.version}
+ provided
+
+
+ org.apache.felix
+ org.apache.felix.scr
+ ${felix.scr.version}
+ provided
+
+
+ org.apache.karaf.scr
+ org.apache.karaf.scr.command
+ ${project.version}
+ provided
+
+
+ org.apache.karaf.scr
+ org.apache.karaf.scr.management
+ ${project.version}
+ provided
+
+
+
+
org.apache.karaf.tooling
karaf-maven-plugin
+ true
30
@@ -53,6 +643,9 @@
features-generate-descriptor
+
+ false
+
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
index 6d237aa..145f3df 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
@@ -158,6 +158,13 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
*/
private boolean includeTransitiveDependency;
+ /**
+ * The standard behavior is to add dependencies as <bundle> elements to a <feature>
+ * with the same name as the artifactId of the project. This flag disables that behavior.
+ *
+ * @parameter default-value="true"
+ */
+ private boolean addBundlesToPrimaryFeature;
// *************************************************
@@ -232,15 +239,6 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
protected MavenSession session;
/**
- * Location of filtered dependency file.
- *
- * @parameter default-value="${basedir}/target/history/dependencies.xml"
- * @required
- * @readonly
- */
- private File filteredDependencyCache;
-
- /**
* @plexus.requirement role-hint="default"
* @component
* @required
@@ -335,14 +333,8 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
Features includedFeatures = readFeaturesFile(featuresFile);
//TODO check for duplicates?
features.getFeature().addAll(includedFeatures.getFeature());
- } else {
- Dependency dependency = objectFactory.createDependency();
- dependency.setName(artifact.getArtifactId());
- //TODO convert to bundles version?
- dependency.setVersion(artifact.getVersion());
- feature.getFeature().add(dependency);
}
- } else {
+ } else if (addBundlesToPrimaryFeature) {
String bundleName = MavenUtil.artifactToMvn(artifact);
File bundleFile = resolve(artifact);
Manifest manifest = getManifest(bundleFile);
@@ -369,7 +361,6 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
if (startLevel != null && bundle.getStartLevel() == 0) {
bundle.setStartLevel(startLevel);
}
-
}
}
@@ -482,6 +473,14 @@ public class GenerateDescriptorMojo extends AbstractLogEnabled implements Mojo {
private File dependencyCache;
/**
+ * Location of filtered dependency file.
+ *
+ * @parameter default-value="${basedir}/target/history/dependencies.xml"
+ * @readonly
+ */
+ private File filteredDependencyCache;
+
+ /**
* Whether to fail on changed dependencies (default, true) or warn (false). This is parameter is ignored unless
* checkDependencyChange is set to true and dependencyCache exists to compare
* against.