You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2011/05/31 21:24:32 UTC

svn commit: r1129865 - in /karaf/branches/karaf-2.2.x: manual/src/main/webapp/developers-guide/ tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/

Author: jbonofre
Date: Tue May 31 19:24:31 2011
New Revision: 1129865

URL: http://svn.apache.org/viewvc?rev=1129865&view=rev
Log:
[KARAF-663] Automatically add Karaf core features descriptors (standard and enterprise) in the add-features-to-repo goal.

Modified:
    karaf/branches/karaf-2.2.x/manual/src/main/webapp/developers-guide/features-maven-plugin-add.conf
    karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddFeaturesToRepoMojo.java
    karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/ValidateFeaturesMojo.java

Modified: karaf/branches/karaf-2.2.x/manual/src/main/webapp/developers-guide/features-maven-plugin-add.conf
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/manual/src/main/webapp/developers-guide/features-maven-plugin-add.conf?rev=1129865&r1=1129864&r2=1129865&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/manual/src/main/webapp/developers-guide/features-maven-plugin-add.conf (original)
+++ karaf/branches/karaf-2.2.x/manual/src/main/webapp/developers-guide/features-maven-plugin-add.conf Tue May 31 19:24:31 2011
@@ -2,6 +2,8 @@ h2. Goal {{features:add-features-to-repo
 
 The {{features:add-features-to-repo}} goal adds all the required bundles for a given set of features into directory.  You can use this goal to create a {{/system}} directory for building your own Karaf-based distribution.
 
+By default, the Karaf core features descriptors (standard and enterprise) are automatically included in the descriptors set.
+
 h3. Example
 The example below copies the bundles for the {{spring}} and {{war}} features defined in the Karaf features XML descriptor into the {{target/features-repo}} directory.
 {pygmentize:xml}
@@ -22,11 +24,12 @@ The example below copies the bundles for
             </goals>
             <configuration>
               <descriptors>
-                <descriptor>mvn:org.apache.karaf/apache-karaf/${karaf.version}/xml/features</descriptor>
+                <descriptor>mvn:my.groupid/my.artifactid/1.0.0/xml/features</descriptor>
               </descriptors>
               <features>
                 <feature>spring</feature>
                 <feature>war</feature>
+                <feature>my</feature>
               </features>
               <repository>target/features-repo</repository>
             </configuration>
@@ -40,6 +43,7 @@ The example below copies the bundles for
 
 h3. Parameters
 || Name || Type || Description ||
-| {{descriptors}} | {{String[]}} | List of features XML descriptors where the features are defined |
+| {{descriptors}} | {{String[]}} | List of features XML descriptors where the features are defined \\ NB: Karaf core features descriptors (standard and enterprise) are automatically added in this list |
 | {{features}} | {{String[]}} | List of features that bundles should be copied to the repository directory |
-| {{repository}} | {{File}} | The directory where the bundles will be copied by the plugin goal |
\ No newline at end of file
+| {{repository}} | {{File}} | The directory where the bundles will be copied by the plugin goal |
+| {{karafVersion}} | {{String}} | Target Karaf version to use to resolve the Karaf core features descriptors (standard and enterprise) |
\ No newline at end of file

Modified: karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddFeaturesToRepoMojo.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddFeaturesToRepoMojo.java?rev=1129865&r1=1129864&r2=1129865&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddFeaturesToRepoMojo.java (original)
+++ karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/AddFeaturesToRepoMojo.java Tue May 31 19:24:31 2011
@@ -64,6 +64,9 @@ import org.xml.sax.SAXException;
  */
 public class AddFeaturesToRepoMojo extends MojoSupport {
 
+    private final static String KARAF_CORE_STANDARD_FEATURE_URL = "mvn:org.apache.karaf.assemblies.features/standard/%s/xml/features";
+    private final static String KARAF_CORE_ENTERPRISE_FEATURE_URL = "mvn:org.apache.karaf.assemblies.features/enterprise/%s/xml/features";
+
     /**
      * @parameter
      */
@@ -80,6 +83,13 @@ public class AddFeaturesToRepoMojo exten
     private File repository;
 
     /**
+     * which is the target karaf version used to resolve karaf core features descriptors
+     *
+     * @parameter
+     */
+    private String karafVersion;
+
+    /**
      * @parameter
      */
     private boolean includeMvnBasedDescriptors = false;
@@ -105,21 +115,49 @@ public class AddFeaturesToRepoMojo exten
     private boolean addTransitiveFeatures = true;
 
     public void execute() throws MojoExecutionException, MojoFailureException {
+        if (karafVersion == null) {
+            Package p = Package.getPackage("org.apache.karaf.tooling.features");
+            karafVersion = p.getImplementationVersion();
+        }
+        String karafCoreEnterpriseFeatureUrl = String.format(KARAF_CORE_ENTERPRISE_FEATURE_URL, karafVersion);
+        Artifact enterpriseFeatureDescriptor = bundleToArtifact(karafCoreEnterpriseFeatureUrl, true);
+        if (enterpriseFeatureDescriptor != null) {
+            try {
+                resolveBundle(enterpriseFeatureDescriptor, remoteRepos);
+                descriptors.add(0, karafCoreEnterpriseFeatureUrl);
+            } catch (Exception e) {
+                getLog().warn("Can't add " + enterpriseFeatureDescriptor + " in the descriptors set");
+                getLog().debug(e);
+            }
+        }
+        String karafCoreStandardFeatureUrl = String.format(KARAF_CORE_STANDARD_FEATURE_URL, karafVersion);
+        Artifact standardFeatureDescriptor = bundleToArtifact(karafCoreStandardFeatureUrl, true);
+        if (standardFeatureDescriptor != null) {
+            try {
+                resolveBundle(standardFeatureDescriptor, remoteRepos);
+                descriptors.add(0, karafCoreStandardFeatureUrl);
+            } catch (Exception e) {
+                getLog().warn("Can't add " + standardFeatureDescriptor + " in the descriptors set");
+                getLog().debug(e);
+            }
+        }
         try {
             Set<String> bundles = new HashSet<String>();
             Map<String, Feature> featuresMap = new HashMap<String, Feature>();
             for (String uri : descriptors) {
-                // let's ensure a mvn: based url is sitting in the local repo before we try reading it
-                Artifact descriptor = bundleToArtifact(uri, true);
-                if (descriptor != null) {
-                    resolveBundle(descriptor, remoteRepos);
-                }
-                if (includeMvnBasedDescriptors) {
-                    bundles.add(uri);
-                }
-                Repository repo = new Repository(URI.create(translateFromMaven(uri)));
-                for (Feature f : repo.getFeatures()) {
-                    featuresMap.put(f.getName(), f);
+                if (!uri.equals(karafCoreStandardFeatureUrl) && !uri.equals(karafCoreEnterpriseFeatureUrl)) {
+                    // let's ensure a mvn: based url is sitting in the local repo before we try reading it
+                    Artifact descriptor = bundleToArtifact(uri, true);
+                    if (descriptor != null) {
+                        resolveBundle(descriptor, remoteRepos);
+                    }
+                    if (includeMvnBasedDescriptors) {
+                        bundles.add(uri);
+                    }
+                    Repository repo = new Repository(URI.create(translateFromMaven(uri)));
+                    for (Feature f : repo.getFeatures()) {
+                        featuresMap.put(f.getName(), f);
+                    }
                 }
             }
             

Modified: karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/ValidateFeaturesMojo.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/ValidateFeaturesMojo.java?rev=1129865&r1=1129864&r2=1129865&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/ValidateFeaturesMojo.java (original)
+++ karaf/branches/karaf-2.2.x/tooling/features-maven-plugin/src/main/java/org/apache/karaf/tooling/features/ValidateFeaturesMojo.java Tue May 31 19:24:31 2011
@@ -199,6 +199,9 @@ public class ValidateFeaturesMojo extend
         appendKarafCoreFeaturesDescriptors();
     }
 
+    /**
+     * Add Karaf core features descriptors in the default repositories set.
+     */
     private void appendKarafCoreFeaturesDescriptors() {
         if (repositories == null) {
             repositories = new ArrayList<String>();