You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/05/19 08:50:45 UTC

[1/2] camel git commit: Maven plugins: m2e compatibility

Repository: camel
Updated Branches:
  refs/heads/master a8e18c209 -> 5fca7ac4d


Maven plugins: m2e compatibility

 - Uses BuildContext to support m2e and improve user experience in Eclipse
  - Only trigger execution when input has changed
  - Notify eclipse of change of output
 - Only support the following goals in camel-package-maven-plugin (the others are not really meant to be used by non-Camel developers)
  - generate-components-list
  - generate-dataformats-list
  - generate-languages-list
  - prepare-components


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/35c14d2f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/35c14d2f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/35c14d2f

Branch: refs/heads/master
Commit: 35c14d2fc1ed19ed53b3819bd8d6b1a1f131bda7
Parents: a8e18c2
Author: Victor Noël <vi...@linagora.com>
Authored: Mon May 18 12:43:04 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue May 19 08:20:40 2015 +0200

----------------------------------------------------------------------
 parent/pom.xml                                  |  2 +-
 .../maven/camel-package-maven-plugin/pom.xml    |  5 ++++
 .../maven/packaging/PackageComponentMojo.java   | 27 ++++++++++++++++--
 .../maven/packaging/PackageDataFormatMojo.java  | 29 ++++++++++++++++++--
 .../maven/packaging/PackageLanguageMojo.java    | 25 +++++++++++++----
 .../maven/packaging/PrepareComponentMojo.java   | 24 +++++++++++-----
 .../META-INF/m2e/lifecycle-mapping-metadata.xml |  2 ++
 7 files changed, 95 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index c6902b7..c42ab3c 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -386,7 +386,7 @@
     <pdfbox-version>1.8.9</pdfbox-version>
     <pgjdbc-ng-driver-version>0.4</pgjdbc-ng-driver-version>
     <plexus-container-default-version>1.0-alpha-48</plexus-container-default-version>
-    <plexus-utils-version>1.5.6</plexus-utils-version>
+    <plexus-utils-version>1.5.8</plexus-utils-version>
     <pojosr-version>0.2.1</pojosr-version>
     <powermock-version>1.6.1</powermock-version>
     <protobuf-version>2.6.1</protobuf-version>

http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/tooling/maven/camel-package-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/pom.xml b/tooling/maven/camel-package-maven-plugin/pom.xml
index 2a95401..f5f9b06 100644
--- a/tooling/maven/camel-package-maven-plugin/pom.xml
+++ b/tooling/maven/camel-package-maven-plugin/pom.xml
@@ -59,6 +59,11 @@
       <version>2.2.1</version>
     </dependency>
     <dependency>
+      <groupId>org.sonatype.plexus</groupId>
+      <artifactId>plexus-build-api</artifactId>
+      <version>0.0.7</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
index 5e935fc..e46d63d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
@@ -30,6 +30,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
+import org.sonatype.plexus.build.incremental.BuildContext;
 
 /**
  * Analyses the Camel plugins in a project and generates extra descriptor information for easier auto-discovery in Camel.
@@ -63,6 +64,15 @@ public class PackageComponentMojo extends AbstractMojo {
     private MavenProjectHelper projectHelper;
 
     /**
+     * build context to check changed files and mark them for refresh (used for
+     * m2e compatibility)
+     * 
+     * @component
+     * @readonly
+     */
+    private BuildContext buildContext;
+
+    /**
      * Execute goal.
      *
      * @throws MojoExecutionException execution of the main class or one of the
@@ -70,12 +80,23 @@ public class PackageComponentMojo extends AbstractMojo {
      * @throws MojoFailureException something bad happened...
      */
     public void execute() throws MojoExecutionException, MojoFailureException {
-        prepareComponent(getLog(), project, projectHelper, componentOutDir);
+        prepareComponent(getLog(), project, projectHelper, componentOutDir, buildContext);
     }
 
-    public static void prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper, File componentOutDir) throws MojoExecutionException {
+    public static void prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper, File componentOutDir, BuildContext buildContext) throws MojoExecutionException {
         File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/");
 
+        boolean changed = false;
+        for (Resource r : project.getBuild().getResources()) {
+            if (buildContext.hasDelta(r.getDirectory() + "/META-INF/services/org/apache/camel/component")) {
+                changed = true;
+            }
+        }
+
+        if (!changed) {
+            return;
+        }
+
         StringBuilder buffer = new StringBuilder();
         int count = 0;
         for (Resource r : project.getBuild().getResources()) {
@@ -122,8 +143,8 @@ public class PackageComponentMojo extends AbstractMojo {
             File outFile = new File(camelMetaDir, "component.properties");
             try {
                 properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
+                buildContext.refresh(outFile);
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "components: " : "component: ") + names);
-
                 if (projectHelper != null) {
                     List<String> includes = new ArrayList<String>();
                     includes.add("**/component.properties");

http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
index 59b5736..ee022d4 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
@@ -39,6 +39,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
+import org.sonatype.plexus.build.incremental.BuildContext;
 
 import static org.apache.camel.maven.packaging.PackageHelper.after;
 import static org.apache.camel.maven.packaging.PackageHelper.loadText;
@@ -81,6 +82,15 @@ public class PackageDataFormatMojo extends AbstractMojo {
      * @readonly
      */
     private MavenProjectHelper projectHelper;
+    
+    /**
+     * build context to check changed files and mark them for refresh (used for
+     * m2e compatibility)
+     * 
+     * @component
+     * @readonly
+     */
+    private BuildContext buildContext;
 
     /**
      * Execute goal.
@@ -90,10 +100,22 @@ public class PackageDataFormatMojo extends AbstractMojo {
      * @throws org.apache.maven.plugin.MojoFailureException   something bad happened...
      */
     public void execute() throws MojoExecutionException, MojoFailureException {
-        prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir);
+        prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir, buildContext);
     }
 
-    public static void prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir, File schemaOutDir) throws MojoExecutionException {
+    public static void prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
+
+        boolean changed = false;
+        for (Resource r : project.getBuild().getResources()) {
+            if (buildContext.hasDelta(r.getDirectory() + "/META-INF/services/org/apache/camel/dataformat")) {
+                changed = true;
+            }
+        }
+
+        if (!changed) {
+            return;
+        }
+        
         File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/");
 
         Map<String, String> javaTypes = new HashMap<String, String>();
@@ -207,6 +229,8 @@ public class PackageDataFormatMojo extends AbstractMojo {
                                 FileOutputStream fos = new FileOutputStream(out, false);
                                 fos.write(schema.getBytes());
                                 fos.close();
+                                
+                                buildContext.refresh(out);
 
                                 log.debug("Generated " + out + " containing JSon schema for " + name + " data format");
                             }
@@ -234,6 +258,7 @@ public class PackageDataFormatMojo extends AbstractMojo {
             File outFile = new File(camelMetaDir, "dataformat.properties");
             try {
                 properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
+                buildContext.refresh(outFile);
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "dataformats: " : "dataformat: ") + names);
 
                 if (projectHelper != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
index 70166a2..2e3d544 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.maven.packaging;
 
+import static org.apache.camel.maven.packaging.PackageHelper.after;
+import static org.apache.camel.maven.packaging.PackageHelper.loadText;
+import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -39,10 +43,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
-
-import static org.apache.camel.maven.packaging.PackageHelper.after;
-import static org.apache.camel.maven.packaging.PackageHelper.loadText;
-import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
+import org.sonatype.plexus.build.incremental.BuildContext;
 
 /**
  * Analyses the Camel plugins in a project and generates extra descriptor information for easier auto-discovery in Camel.
@@ -83,6 +84,15 @@ public class PackageLanguageMojo extends AbstractMojo {
     private MavenProjectHelper projectHelper;
 
     /**
+     * build context to check changed files and mark them for refresh
+     * (used for m2e compatibility)
+     * 
+     * @component
+     * @readonly
+     */
+    private BuildContext buildContext;
+
+    /**
      * Execute goal.
      *
      * @throws org.apache.maven.plugin.MojoExecutionException execution of the main class or one of the
@@ -90,10 +100,10 @@ public class PackageLanguageMojo extends AbstractMojo {
      * @throws org.apache.maven.plugin.MojoFailureException   something bad happened...
      */
     public void execute() throws MojoExecutionException, MojoFailureException {
-        prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir);
+        prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir, buildContext);
     }
 
-    public static void prepareLanguage(Log log, MavenProject project, MavenProjectHelper projectHelper, File languageOutDir, File schemaOutDir) throws MojoExecutionException {
+    public static void prepareLanguage(Log log, MavenProject project, MavenProjectHelper projectHelper, File languageOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
         File camelMetaDir = new File(languageOutDir, "META-INF/services/org/apache/camel/");
 
         Map<String, String> javaTypes = new HashMap<String, String>();
@@ -203,6 +213,8 @@ public class PackageLanguageMojo extends AbstractMojo {
                                 FileOutputStream fos = new FileOutputStream(out, false);
                                 fos.write(schema.getBytes());
                                 fos.close();
+                                
+                                buildContext.refresh(out);
 
                                 log.debug("Generated " + out + " containing JSon schema for " + name + " language");
                             }
@@ -230,6 +242,7 @@ public class PackageLanguageMojo extends AbstractMojo {
             File outFile = new File(camelMetaDir, "language.properties");
             try {
                 properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
+                buildContext.refresh(outFile);
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "languages: " : "language: ") + names);
 
                 if (projectHelper != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
index 8608677..6017b96 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.maven.packaging;
 
+import static org.apache.camel.maven.packaging.PackageComponentMojo.prepareComponent;
+import static org.apache.camel.maven.packaging.PackageDataFormatMojo.prepareDataFormat;
+import static org.apache.camel.maven.packaging.PackageLanguageMojo.prepareLanguage;
+
 import java.io.File;
 
 import org.apache.maven.plugin.AbstractMojo;
@@ -23,10 +27,7 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
-
-import static org.apache.camel.maven.packaging.PackageComponentMojo.prepareComponent;
-import static org.apache.camel.maven.packaging.PackageDataFormatMojo.prepareDataFormat;
-import static org.apache.camel.maven.packaging.PackageLanguageMojo.prepareLanguage;
+import org.sonatype.plexus.build.incremental.BuildContext;
 
 /**
  * Prepares a Camel component analyzing if the maven module contains Camel
@@ -87,6 +88,15 @@ public class PrepareComponentMojo extends AbstractMojo {
     private MavenProjectHelper projectHelper;
 
     /**
+     * build context to check changed files and mark them for refresh
+     * (used for m2e compatibility)
+     * 
+     * @component
+     * @readonly
+     */
+    private BuildContext buildContext;
+    
+    /**
      * Execute goal.
      *
      * @throws org.apache.maven.plugin.MojoExecutionException execution of the main class or one of the
@@ -94,9 +104,9 @@ public class PrepareComponentMojo extends AbstractMojo {
      * @throws org.apache.maven.plugin.MojoFailureException   something bad happened...
      */
     public void execute() throws MojoExecutionException, MojoFailureException {
-        prepareComponent(getLog(), project, projectHelper, componentOutDir);
-        prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir);
-        prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir);
+        prepareComponent(getLog(), project, projectHelper, componentOutDir, buildContext);
+        prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir, buildContext);
+        prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir, buildContext);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/35c14d2f/tooling/maven/camel-package-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml b/tooling/maven/camel-package-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
index ca34605..f2b164e 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
+++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
@@ -21,6 +21,8 @@
         <goals>
           <goal>generate-components-list</goal>
           <goal>generate-dataformats-list</goal>
+          <goal>generate-languages-list</goal>
+          <goal>prepare-components</goal>
         </goals>
       </pluginExecutionFilter>
       <action>


[2/2] camel git commit: Refactor and fixes m2e integration

Posted by da...@apache.org.
Refactor and fixes m2e integration

The delta check wasn't properly working (because of absolute paths).
Factorised the checking method.
Added debug logs.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5fca7ac4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5fca7ac4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5fca7ac4

Branch: refs/heads/master
Commit: 5fca7ac4d670427c2dae7c8cf19fd40a87c6c10f
Parents: 35c14d2
Author: Victor Noël <vi...@linagora.com>
Authored: Mon May 18 13:28:21 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue May 19 08:20:41 2015 +0200

----------------------------------------------------------------------
 .../maven/packaging/PackageComponentMojo.java   | 15 +++++--------
 .../maven/packaging/PackageDataFormatMojo.java  | 11 ++--------
 .../camel/maven/packaging/PackageHelper.java    | 22 ++++++++++++++++++++
 .../maven/packaging/PackageLanguageMojo.java    |  5 +++++
 4 files changed, 34 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5fca7ac4/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
index e46d63d..92ed09d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageComponentMojo.java
@@ -84,19 +84,13 @@ public class PackageComponentMojo extends AbstractMojo {
     }
 
     public static void prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper, File componentOutDir, BuildContext buildContext) throws MojoExecutionException {
-        File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/");
-
-        boolean changed = false;
-        for (Resource r : project.getBuild().getResources()) {
-            if (buildContext.hasDelta(r.getDirectory() + "/META-INF/services/org/apache/camel/component")) {
-                changed = true;
-            }
-        }
-
-        if (!changed) {
+        
+        if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/component")) {
             return;
         }
 
+        File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/");
+
         StringBuilder buffer = new StringBuilder();
         int count = 0;
         for (Resource r : project.getBuild().getResources()) {
@@ -145,6 +139,7 @@ public class PackageComponentMojo extends AbstractMojo {
                 properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
                 buildContext.refresh(outFile);
                 log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "components: " : "component: ") + names);
+
                 if (projectHelper != null) {
                     List<String> includes = new ArrayList<String>();
                     includes.add("**/component.properties");

http://git-wip-us.apache.org/repos/asf/camel/blob/5fca7ac4/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
index ee022d4..9ddfe28 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
@@ -105,17 +105,10 @@ public class PackageDataFormatMojo extends AbstractMojo {
 
     public static void prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
 
-        boolean changed = false;
-        for (Resource r : project.getBuild().getResources()) {
-            if (buildContext.hasDelta(r.getDirectory() + "/META-INF/services/org/apache/camel/dataformat")) {
-                changed = true;
-            }
-        }
-
-        if (!changed) {
+        if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/dataformat")) {
             return;
         }
-        
+
         File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/");
 
         Map<String, String> javaTypes = new HashMap<String, String>();

http://git-wip-us.apache.org/repos/asf/camel/blob/5fca7ac4/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
index e3794d7..c6d9009 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageHelper.java
@@ -27,10 +27,32 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.maven.model.Resource;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
 public final class PackageHelper {
 
     private PackageHelper() {
     }
+    
+    public static boolean haveResourcesChanged(Log log, MavenProject project, BuildContext buildContext, String suffix) {
+        String baseDir = project.getBasedir().getAbsolutePath();
+        for (Resource r : project.getBuild().getResources()) {
+            File file = new File(r.getDirectory());
+            if (file.isAbsolute()) {
+                file = new File(r.getDirectory().substring(baseDir.length() + 1));
+            }
+            String path = file.getPath() + "/" + suffix;
+            log.debug("checking  if "+ path + " (" + r.getDirectory() + "/" + suffix + ") has changed.");
+            if (buildContext.hasDelta(path)) {
+                log.debug("Indeed "+ suffix +" has changed.");
+                return true;
+            }
+        }
+        return false;
+    }
 
     /**
      * Loads the entire stream into memory as a String and returns it.

http://git-wip-us.apache.org/repos/asf/camel/blob/5fca7ac4/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
index 2e3d544..8af508d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java
@@ -104,6 +104,11 @@ public class PackageLanguageMojo extends AbstractMojo {
     }
 
     public static void prepareLanguage(Log log, MavenProject project, MavenProjectHelper projectHelper, File languageOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException {
+
+        if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/language")) {
+            return;
+        }
+
         File camelMetaDir = new File(languageOutDir, "META-INF/services/org/apache/camel/");
 
         Map<String, String> javaTypes = new HashMap<String, String>();