You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2016/10/21 13:59:40 UTC

[1/3] karaf git commit: [KARAF-4787] Don't use the features-generate-descriptor inside our build

Repository: karaf
Updated Branches:
  refs/heads/master be41010a3 -> 013416ea3


[KARAF-4787] Don't use the features-generate-descriptor inside our build

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/3065ace3
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/3065ace3
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/3065ace3

Branch: refs/heads/master
Commit: 3065ace3b7196c93293b07afbac6c15ceddba048
Parents: be41010
Author: Guillaume Nodet <gn...@apache.org>
Authored: Fri Oct 21 09:54:17 2016 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Fri Oct 21 09:54:17 2016 +0200

----------------------------------------------------------------------
 assemblies/features/enterprise/pom.xml          | 26 +++++++++++-------
 assemblies/features/framework/pom.xml           | 28 ++++---------------
 assemblies/features/spring/pom.xml              | 27 ++++++++++--------
 assemblies/features/standard/pom.xml            | 28 ++++++++++++-------
 assemblies/features/static/pom.xml              | 28 ++++---------------
 .../static/src/main/feature/feature.xml         | 29 ++++++++++++++++++++
 .../static/src/main/feature/features.xml        | 29 --------------------
 7 files changed, 89 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/enterprise/pom.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/enterprise/pom.xml b/assemblies/features/enterprise/pom.xml
index 5b54c1b..6a8675f 100644
--- a/assemblies/features/enterprise/pom.xml
+++ b/assemblies/features/enterprise/pom.xml
@@ -188,23 +188,29 @@
     </dependencies>
 
     <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/feature</directory>
+                <filtering>true</filtering>
+                <targetPath>${project.build.directory}/feature</targetPath>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
-                <groupId>org.apache.karaf.tooling</groupId>
-                <artifactId>karaf-maven-plugin</artifactId>
-                <configuration>
-                </configuration>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>compile</id>
-                        <phase>generate-resources</phase>
                         <goals>
-                            <goal>features-generate-descriptor</goal>
+                            <goal>resources</goal>
                         </goals>
-                        <configuration>
-                            <addBundlesToPrimaryFeature>false</addBundlesToPrimaryFeature>
-                        </configuration>
                     </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-maven-plugin</artifactId>
+                <executions>
                     <execution>
                         <id>verify</id>
                         <phase>process-resources</phase>

http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/framework/pom.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/framework/pom.xml b/assemblies/features/framework/pom.xml
index b4806a6..b577001 100644
--- a/assemblies/features/framework/pom.xml
+++ b/assemblies/features/framework/pom.xml
@@ -173,6 +173,11 @@
     <build>
         <resources>
             <resource>
+                <directory>${project.basedir}/src/main/feature</directory>
+                <filtering>true</filtering>
+                <targetPath>${project.build.directory}/feature</targetPath>
+            </resource>
+            <resource>
                 <directory>${project.basedir}/src/main/resources</directory>
                 <filtering>false</filtering>
                 <includes>
@@ -254,31 +259,8 @@
                 <groupId>org.apache.karaf.tooling</groupId>
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>${project.version}</version>
-                <configuration>
-                    <startLevel>30</startLevel>
-                    <!--<checkDependencyChange>true</checkDependencyChange>-->
-                    <!--<overwriteChangedDependencies>true</overwriteChangedDependencies>-->
-                    <!--<failOnDependencyChange>false</failOnDependencyChange>-->
-                </configuration>
                 <executions>
                     <execution>
-                        <id>compile</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <excludedArtifactIds>
-                                <excludedArtifactId>slf4j-api</excludedArtifactId>
-                                <excludedArtifactId>sshd-core</excludedArtifactId>
-                                <excludedArtifactId>jline</excludedArtifactId>
-                                <excludedArtifactId>core</excludedArtifactId>
-                                <excludedArtifactId>org.apache.karaf.region.core</excludedArtifactId>
-                                <excludedArtifactId>org.eclipse.equinox.region</excludedArtifactId>
-                            </excludedArtifactIds>
-                        </configuration>
-                    </execution>
-                    <execution>
                         <id>package</id>
                         <goals>
                             <goal>kar</goal>

http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/spring/pom.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/spring/pom.xml b/assemblies/features/spring/pom.xml
index 3fff381..3ed9845 100644
--- a/assemblies/features/spring/pom.xml
+++ b/assemblies/features/spring/pom.xml
@@ -164,24 +164,29 @@
     </dependencies>
 
     <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/feature</directory>
+                <filtering>true</filtering>
+                <targetPath>${project.build.directory}/feature</targetPath>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
-                <groupId>org.apache.karaf.tooling</groupId>
-                <artifactId>karaf-maven-plugin</artifactId>
-                <configuration>
-                    <startLevel>30</startLevel>
-                </configuration>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>compile</id>
-                        <phase>generate-resources</phase>
                         <goals>
-                            <goal>features-generate-descriptor</goal>
+                            <goal>resources</goal>
                         </goals>
-                        <configuration>
-                            <addBundlesToPrimaryFeature>false</addBundlesToPrimaryFeature>
-                        </configuration>
                     </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-maven-plugin</artifactId>
+                <executions>
                     <execution>
                         <id>verify</id>
                         <phase>process-resources</phase>

http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/standard/pom.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/standard/pom.xml b/assemblies/features/standard/pom.xml
index 76c21ba..87f571d 100644
--- a/assemblies/features/standard/pom.xml
+++ b/assemblies/features/standard/pom.xml
@@ -395,8 +395,26 @@
     </dependencies>
 
     <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/feature</directory>
+                <filtering>true</filtering>
+                <targetPath>${project.build.directory}/feature</targetPath>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>resources</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.karaf.tooling</groupId>
                 <artifactId>karaf-maven-plugin</artifactId>
                 <configuration>
@@ -404,16 +422,6 @@
                 </configuration>
                 <executions>
                     <execution>
-                        <id>compile</id>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <addBundlesToPrimaryFeature>false</addBundlesToPrimaryFeature>
-                        </configuration>
-                    </execution>
-                    <execution>
                         <id>verify</id>
                         <phase>process-resources</phase>
                         <goals>

http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/static/pom.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/static/pom.xml b/assemblies/features/static/pom.xml
index c6c917a..ab233a8 100644
--- a/assemblies/features/static/pom.xml
+++ b/assemblies/features/static/pom.xml
@@ -64,6 +64,11 @@
     <build>
         <resources>
             <resource>
+                <directory>${project.basedir}/src/main/feature</directory>
+                <filtering>true</filtering>
+                <targetPath>${project.build.directory}/feature</targetPath>
+            </resource>
+            <resource>
                 <directory>${project.basedir}/src/main/resources</directory>
                 <filtering>false</filtering>
                 <includes>
@@ -140,31 +145,8 @@
                 <groupId>org.apache.karaf.tooling</groupId>
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>${project.version}</version>
-                <configuration>
-                    <startLevel>30</startLevel>
-                    <!--<checkDependencyChange>true</checkDependencyChange>-->
-                    <!--<overwriteChangedDependencies>true</overwriteChangedDependencies>-->
-                    <!--<failOnDependencyChange>false</failOnDependencyChange>-->
-                </configuration>
                 <executions>
                     <execution>
-                        <id>compile</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <excludedArtifactIds>
-                                <excludedArtifactId>slf4j-api</excludedArtifactId>
-                                <excludedArtifactId>sshd-core</excludedArtifactId>
-                                <excludedArtifactId>jline</excludedArtifactId>
-                                <excludedArtifactId>core</excludedArtifactId>
-                                <excludedArtifactId>org.apache.karaf.region.core</excludedArtifactId>
-                                <excludedArtifactId>org.eclipse.equinox.region</excludedArtifactId>
-                            </excludedArtifactIds>
-                        </configuration>
-                    </execution>
-                    <execution>
                         <id>package</id>
                         <goals>
                             <goal>kar</goal>

http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/static/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/static/src/main/feature/feature.xml b/assemblies/features/static/src/main/feature/feature.xml
new file mode 100644
index 0000000..8f191a5
--- /dev/null
+++ b/assemblies/features/static/src/main/feature/feature.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+-->
+<features name="static-framework-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.1 http://karaf.apache.org/xmlns/features/v1.2.1">
+
+    <feature version="${project.version}" description="Karaf core feature" name="static-framework">
+        <!-- logging -->
+        <bundle start="true" start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/${pax.logging.version}</bundle>
+        <bundle start="true" start-level="8">mvn:org.ops4j.pax.logging/pax-logging-log4j2/${pax.logging.version}</bundle>
+        <!-- static config admin -->
+        <bundle start="true" start-level="10">mvn:org.apache.karaf.services/org.apache.karaf.services.staticcm/${project.version}</bundle>
+    </feature>
+
+</features>

http://git-wip-us.apache.org/repos/asf/karaf/blob/3065ace3/assemblies/features/static/src/main/feature/features.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/static/src/main/feature/features.xml b/assemblies/features/static/src/main/feature/features.xml
deleted file mode 100644
index 8f191a5..0000000
--- a/assemblies/features/static/src/main/feature/features.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-
-      Licensed to the Apache Software Foundation (ASF) under one or more
-      contributor license agreements.  See the NOTICE file distributed with
-      this work for additional information regarding copyright ownership.
-      The ASF licenses this file to You under the Apache License, Version 2.0
-      (the "License"); you may not use this file except in compliance with
-      the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-      Unless required by applicable law or agreed to in writing, software
-      distributed under the License is distributed on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-      See the License for the specific language governing permissions and
-      limitations under the License.
--->
-<features name="static-framework-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.1 http://karaf.apache.org/xmlns/features/v1.2.1">
-
-    <feature version="${project.version}" description="Karaf core feature" name="static-framework">
-        <!-- logging -->
-        <bundle start="true" start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/${pax.logging.version}</bundle>
-        <bundle start="true" start-level="8">mvn:org.ops4j.pax.logging/pax-logging-log4j2/${pax.logging.version}</bundle>
-        <!-- static config admin -->
-        <bundle start="true" start-level="10">mvn:org.apache.karaf.services/org.apache.karaf.services.staticcm/${project.version}</bundle>
-    </feature>
-
-</features>


[2/3] karaf git commit: [KARAF-4801] Remove some requirements for the verify goal

Posted by gn...@apache.org.
[KARAF-4801] Remove some requirements for the verify goal

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/597a2778
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/597a2778
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/597a2778

Branch: refs/heads/master
Commit: 597a2778e731d68c53d3206ca3e1b834e194a048
Parents: 3065ace
Author: Guillaume Nodet <gn...@apache.org>
Authored: Fri Oct 21 14:09:28 2016 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Fri Oct 21 14:49:45 2016 +0200

----------------------------------------------------------------------
 tooling/karaf-maven-plugin/pom.xml              |  9 +++
 .../apache/karaf/tooling/versions.properties    |  1 +
 .../org/apache/karaf/tooling/VerifyMojo.java    | 74 +++++++++++++++++---
 3 files changed, 74 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/597a2778/tooling/karaf-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/pom.xml b/tooling/karaf-maven-plugin/pom.xml
index 1f8ed33..e0a0118 100644
--- a/tooling/karaf-maven-plugin/pom.xml
+++ b/tooling/karaf-maven-plugin/pom.xml
@@ -211,6 +211,15 @@
     </dependencies>
 
     <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>${project.basedir}/src/main/filtered-resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

http://git-wip-us.apache.org/repos/asf/karaf/blob/597a2778/tooling/karaf-maven-plugin/src/main/filtered-resources/org/apache/karaf/tooling/versions.properties
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/filtered-resources/org/apache/karaf/tooling/versions.properties b/tooling/karaf-maven-plugin/src/main/filtered-resources/org/apache/karaf/tooling/versions.properties
new file mode 100644
index 0000000..fbeec5d
--- /dev/null
+++ b/tooling/karaf-maven-plugin/src/main/filtered-resources/org/apache/karaf/tooling/versions.properties
@@ -0,0 +1 @@
+karaf-version=${project.version}

http://git-wip-us.apache.org/repos/asf/karaf/blob/597a2778/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
index 29f215f..b6b1194 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
@@ -132,6 +132,9 @@ public class VerifyMojo extends MojoSupport {
     @Parameter(property = "dist-dir")
     protected String distDir;
 
+    @Parameter(property = "karaf-version")
+    protected String karafVersion;
+
     @Parameter(property = "additional-metadata")
     protected File additionalMetadata;
 
@@ -157,6 +160,17 @@ public class VerifyMojo extends MojoSupport {
         if (skip) {
             return;
         }
+
+        if (karafVersion == null) {
+            Properties versions = new Properties();
+            try (InputStream is = getClass().getResourceAsStream("versions.properties")) {
+                versions.load(is);
+            } catch (IOException e) {
+                throw new IllegalStateException(e);
+            }
+            karafVersion = versions.getProperty("karaf-version");
+        }
+
         Hashtable<String, String> config = new Hashtable<>();
         StringBuilder remote = new StringBuilder();
         for (Object obj : project.getRemoteProjectRepositories()) {
@@ -181,6 +195,22 @@ public class VerifyMojo extends MojoSupport {
         doExecute();
     }
 
+    private String getVersion(String id, String def) {
+        String v = getVersion(id);
+        return v != null ? v : def;
+    }
+
+    private String getVersion(String id) {
+        Artifact artifact = project.getArtifactMap().get(id);
+        if (artifact != null) {
+            return artifact.getBaseVersion();
+        } else if (id.startsWith("org.apache.karaf")) {
+            return karafVersion;
+        } else {
+            return null;
+        }
+    }
+
     private Object invoke(Object object, String getter) throws MojoExecutionException {
         try {
             return object.getClass().getMethod(getter).invoke(object);
@@ -221,6 +251,21 @@ public class VerifyMojo extends MojoSupport {
             }
         }
 
+        if (descriptors == null) {
+            if (framework == null) {
+                framework = Collections.singleton("framework");
+            }
+            descriptors = new LinkedHashSet<>();
+            if (framework.contains("framework")) {
+                descriptors.add("mvn:org.apache.karaf.features/framework/" + getVersion("org.apache.karaf.features:framework") + "/xml/features");
+            }
+            descriptors.add("file:" + project.getBuild().getDirectory() + "/feature/feature.xml");
+        } else {
+            if (framework != null && framework.contains("framework")) {
+                descriptors.add("mvn:org.apache.karaf.features/framework/" + getVersion("org.apache.karaf.features:framework") + "/xml/features");
+            }
+        }
+
         // TODO: allow using external configuration ?
         ScheduledExecutorService executor = Executors.newScheduledThreadPool(8);
         DownloadManager manager = new CustomDownloadManager(resolver, executor);
@@ -455,17 +500,26 @@ public class VerifyMojo extends MojoSupport {
             configPropURL = new URL(configuration);
         } else {
             Artifact karafDistro = project.getArtifactMap().get(distribution);
-            if (karafDistro == null) {
-                throw new MojoFailureException("The karaf distribution " + distribution + " is not a dependency");
-            }
-            if ("kar".equals(karafDistro.getType()) && distDir == null) {
-                distDir = "resources";
-            }
-            String dir = distDir;
-            if (dir == null) {
-                dir = karafDistro.getArtifactId() + "-" + karafDistro.getBaseVersion();
+            if (karafDistro != null) {
+                String dir = distDir;
+                if ("kar".equals(karafDistro.getType()) && dir == null) {
+                    dir = "resources";
+                }
+                if (dir == null) {
+                    dir = karafDistro.getArtifactId() + "-" + karafDistro.getBaseVersion();
+                }
+                configPropURL = new URL("jar:file:" + karafDistro.getFile() + "!/" + dir + "/etc/config.properties");
+            } else {
+                String version = getVersion(distribution, "RELEASE");
+                String[] dist = distribution.split(":");
+                File distFile = resolver.resolve(dist[0], dist[1], null, "zip", version);
+                String resolvedVersion = distFile.getName().substring(dist[1].length() + 1, distFile.getName().length() - 4);
+                String dir = distDir;
+                if (dir == null) {
+                    dir = dist[1] + "-" + resolvedVersion;
+                }
+                configPropURL = new URL("jar:file:" + distFile + "!/" + dir + "/etc/config.properties");
             }
-            configPropURL = new URL("jar:file:" + karafDistro.getFile() + "!/" + dir + "/etc/config.properties");
         }
         org.apache.felix.utils.properties.Properties configProps = PropertiesLoader.loadPropertiesFile(configPropURL, true);
 //        copySystemProperties(configProps);


[3/3] karaf git commit: [KARAF-4787] Remove the generate goal and add the verify goal from the feature packaging

Posted by gn...@apache.org.
[KARAF-4787] Remove the generate goal and add the verify goal from the feature packaging

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/013416ea
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/013416ea
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/013416ea

Branch: refs/heads/master
Commit: 013416ea31fdd24d5903befadc6f4a11dd770123
Parents: 597a277
Author: Guillaume Nodet <gn...@apache.org>
Authored: Fri Oct 21 14:49:54 2016 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Fri Oct 21 14:49:54 2016 +0200

----------------------------------------------------------------------
 .../aggregate-features/pom.xml                  | 16 ++++------------
 .../dependencies-features/pom.xml               | 18 +++++-------------
 .../dependencies-features/pom.xml               | 18 +++++-------------
 .../dependencies-features/pom.xml               | 18 +++++-------------
 .../dependency-feature-a/pom.xml                |  3 +++
 .../dependency-feature-c/pom.xml                |  3 +++
 .../it/test-feature-use-base-version/pom.xml    |  3 +++
 .../feature/pom.xml                             |  1 +
 .../feature/pom.xml                             |  1 +
 .../it/test-feature-use-version-range/pom.xml   |  1 +
 .../dependency-feature-a/pom.xml                |  3 +++
 .../dependency-feature-b/pom.xml                | 12 +++---------
 .../features/GenerateDescriptorMojo.java        | 20 ++++++++++++++++++++
 .../resources/META-INF/plexus/components.xml    |  6 ++++--
 14 files changed, 61 insertions(+), 62 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-aggregate-features/aggregate-features/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-aggregate-features/aggregate-features/pom.xml b/tooling/karaf-maven-plugin/src/it/test-aggregate-features/aggregate-features/pom.xml
index e46bb4f..4ea5632 100644
--- a/tooling/karaf-maven-plugin/src/it/test-aggregate-features/aggregate-features/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-aggregate-features/aggregate-features/pom.xml
@@ -76,18 +76,10 @@
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <id>generate-features-file</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <aggregateFeatures>true</aggregateFeatures>
-                        </configuration>
-                    </execution>
-                </executions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                    <aggregateFeatures>true</aggregateFeatures>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-check-dependencies-failure/dependencies-features/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-check-dependencies-failure/dependencies-features/pom.xml b/tooling/karaf-maven-plugin/src/it/test-check-dependencies-failure/dependencies-features/pom.xml
index 2885677..de53fd6 100644
--- a/tooling/karaf-maven-plugin/src/it/test-check-dependencies-failure/dependencies-features/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-check-dependencies-failure/dependencies-features/pom.xml
@@ -76,19 +76,11 @@
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <id>generate-features-file</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <aggregateFeatures>true</aggregateFeatures>
-                            <checkDependencyChange>true</checkDependencyChange>
-                        </configuration>
-                    </execution>
-                </executions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                    <aggregateFeatures>true</aggregateFeatures>
+                    <checkDependencyChange>true</checkDependencyChange>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-check-dependencies/dependencies-features/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-check-dependencies/dependencies-features/pom.xml b/tooling/karaf-maven-plugin/src/it/test-check-dependencies/dependencies-features/pom.xml
index d6f8506..f876c26 100644
--- a/tooling/karaf-maven-plugin/src/it/test-check-dependencies/dependencies-features/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-check-dependencies/dependencies-features/pom.xml
@@ -76,19 +76,11 @@
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <id>generate-features-file</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <aggregateFeatures>true</aggregateFeatures>
-                            <checkDependencyChange>true</checkDependencyChange>
-                        </configuration>
-                    </execution>
-                </executions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                    <aggregateFeatures>true</aggregateFeatures>
+                    <checkDependencyChange>true</checkDependencyChange>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependencies-features/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependencies-features/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependencies-features/pom.xml
index 3b232ab..6382df5 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependencies-features/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependencies-features/pom.xml
@@ -62,19 +62,11 @@
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <id>generate-features-file</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                        <configuration>
-                            <aggregateFeatures>true</aggregateFeatures>
-                            <checkDependencyChange>true</checkDependencyChange>
-                        </configuration>
-                    </execution>
-                </executions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                    <aggregateFeatures>true</aggregateFeatures>
+                    <checkDependencyChange>true</checkDependencyChange>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-a/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-a/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-a/pom.xml
index d11c7ee..f596bdf 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-a/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-a/pom.xml
@@ -59,6 +59,9 @@
                         <goals>
                             <goal>features-generate-descriptor</goal>
                         </goals>
+                        <configuration>
+                            <enableGeneration>true</enableGeneration>
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-c/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-c/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-c/pom.xml
index 6717450..f7f0987 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-c/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-dependencies/dependency-feature-c/pom.xml
@@ -59,6 +59,9 @@
                         <goals>
                             <goal>features-generate-descriptor</goal>
                         </goals>
+                        <configuration>
+                            <enableGeneration>true</enableGeneration>
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-use-base-version/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-use-base-version/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-use-base-version/pom.xml
index c8b8dc9..d3262b7 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-use-base-version/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-use-base-version/pom.xml
@@ -41,6 +41,9 @@
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transfer-properties/feature/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transfer-properties/feature/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transfer-properties/feature/pom.xml
index f6d3f1e..e963de0 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transfer-properties/feature/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transfer-properties/feature/pom.xml
@@ -42,6 +42,7 @@
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
                 <configuration>
+                    <enableGeneration>true</enableGeneration>
                 	<useVersionRange>true</useVersionRange>
                 	<includeTransitiveVersionRanges>true</includeTransitiveVersionRanges>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transitive/feature/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transitive/feature/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transitive/feature/pom.xml
index f6d3f1e..e963de0 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transitive/feature/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range-transitive/feature/pom.xml
@@ -42,6 +42,7 @@
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
                 <configuration>
+                    <enableGeneration>true</enableGeneration>
                 	<useVersionRange>true</useVersionRange>
                 	<includeTransitiveVersionRanges>true</includeTransitiveVersionRanges>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range/pom.xml b/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range/pom.xml
index 2c60d55..d319612 100644
--- a/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-feature-use-version-range/pom.xml
@@ -42,6 +42,7 @@
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
                 <configuration>
+                    <enableGeneration>true</enableGeneration>
                 	<useVersionRange>true</useVersionRange>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-a/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-a/pom.xml b/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-a/pom.xml
index 4a7e0a2..231b3a2 100644
--- a/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-a/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-a/pom.xml
@@ -61,6 +61,9 @@
                         </goals>
                     </execution>
                 </executions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-b/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-b/pom.xml b/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-b/pom.xml
index 8f02f51..7920d21 100644
--- a/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-b/pom.xml
+++ b/tooling/karaf-maven-plugin/src/it/test-repository-dependencies/dependency-feature-b/pom.xml
@@ -52,15 +52,9 @@
                 <artifactId>karaf-maven-plugin</artifactId>
                 <version>@pom.version@</version>
                 <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <id>generate-features-file</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>features-generate-descriptor</goal>
-                        </goals>
-                    </execution>
-                </executions>
+                <configuration>
+                    <enableGeneration>true</enableGeneration>
+                </configuration>
             </plugin>
         </plugins>
     </build>

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/features/GenerateDescriptorMojo.java
----------------------------------------------------------------------
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 821cc93..73a58fa 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
@@ -251,6 +251,9 @@ public class GenerateDescriptorMojo extends MojoSupport {
     @Parameter(defaultValue = "false")
     private boolean includeTransitiveVersionRanges;
 
+    @Parameter
+    private Boolean enableGeneration;
+
     // *************************************************
     // READ-ONLY MAVEN PLUGIN PARAMETERS
     // *************************************************
@@ -292,6 +295,23 @@ public class GenerateDescriptorMojo extends MojoSupport {
 
     public void execute() throws MojoExecutionException, MojoFailureException {
         try {
+            if (enableGeneration == null) {
+                String packaging = this.project.getPackaging();
+                enableGeneration = !"feature".equals(packaging) && !"feature".equals(packaging);
+            }
+
+            if (!enableGeneration) {
+                if (inputFile.exists()) {
+                    File dir = outputFile.getParentFile();
+                    if (!dir.isDirectory() && !dir.mkdirs()) {
+                        throw new MojoExecutionException("Could not create directory for features file: " + dir);
+                    }
+                    filter(inputFile, outputFile);
+                    projectHelper.attachArtifact(project, attachmentArtifactType, attachmentArtifactClassifier, outputFile);
+                }
+                return;
+            }
+
             this.dependencyHelper = DependencyHelperFactory.createDependencyHelper(this.container, this.project, this.mavenSession, getLog());
             this.dependencyHelper.getDependencies(project, includeTransitiveDependency);
             this.localDependencies = dependencyHelper.getLocalDependencies();

http://git-wip-us.apache.org/repos/asf/karaf/blob/013416ea/tooling/karaf-maven-plugin/src/main/resources/META-INF/plexus/components.xml
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/resources/META-INF/plexus/components.xml b/tooling/karaf-maven-plugin/src/main/resources/META-INF/plexus/components.xml
index dc52797..c86b142 100644
--- a/tooling/karaf-maven-plugin/src/main/resources/META-INF/plexus/components.xml
+++ b/tooling/karaf-maven-plugin/src/main/resources/META-INF/plexus/components.xml
@@ -30,7 +30,8 @@
                         <id>default</id>
                         <phases>
                             <compile>
-                                org.apache.karaf.tooling:karaf-maven-plugin:features-generate-descriptor
+                                org.apache.karaf.tooling:karaf-maven-plugin:features-generate-descriptor,
+                                org.apache.karaf.tooling:karaf-maven-plugin:verify
                             </compile>
                             <install>
                                 org.apache.maven.plugins:maven-install-plugin:install
@@ -69,7 +70,8 @@
                                 org.apache.maven.plugins:maven-resources-plugin:resources
                             </process-resources>
                             <compile>
-                                org.apache.karaf.tooling:karaf-maven-plugin:features-generate-descriptor
+                                org.apache.karaf.tooling:karaf-maven-plugin:features-generate-descriptor,
+                                org.apache.karaf.tooling:karaf-maven-plugin:verify
                             </compile>
                             <package>
                                 org.apache.karaf.tooling:karaf-maven-plugin:kar