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.