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>();