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 <victor.n...@linagora.com> Authored: Mon May 18 12:43:04 2015 +0200 Committer: Claus Ibsen <davscl...@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>