This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 734548c40bc9f86cd9ca19feea3c84f2a75dd277 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Jan 15 10:53:53 2019 +0100 CAMEL-13055: Polished and optimized the camelpackage-maven-plugin --- .../maven/packaging/PackageComponentMojo.java | 16 +++++++++---- .../maven/packaging/PackageDataFormatMojo.java | 22 ++++++++++++----- .../camel/maven/packaging/PackageHelper.java | 2 +- .../camel/maven/packaging/PackageLanguageMojo.java | 20 +++++++++++----- .../camel/maven/packaging/PackageLegalMojo.java | 9 +++---- .../camel/maven/packaging/PackageOtherMojo.java | 28 ++++++++++------------ .../maven/packaging/PrepareComponentMojo.java | 12 ++++++---- 7 files changed, 68 insertions(+), 41 deletions(-) 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 3e6a398..de29a45 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 @@ -90,7 +90,7 @@ public class PackageComponentMojo extends AbstractMojo { prepareComponent(getLog(), project, projectHelper, buildDir, componentOutDir, buildContext); } - public static void prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper, File buildDir, File componentOutDir, BuildContext buildContext) throws MojoExecutionException { + public static int prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper, File buildDir, File componentOutDir, BuildContext buildContext) throws MojoExecutionException { File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/"); @@ -101,7 +101,7 @@ public class PackageComponentMojo extends AbstractMojo { } if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/component")) { - return; + return 0; } StringBuilder buffer = new StringBuilder(); @@ -145,8 +145,10 @@ public class PackageComponentMojo extends AbstractMojo { } } - // we need to enrich the component json files with data we know have from this plugin - enrichComponentJsonFiles(log, project, buildDir, components); + if (count > 0) { + // we need to enrich the component json files with data we know have from this plugin + enrichComponentJsonFiles(log, project, buildDir, components); + } if (count > 0) { Properties properties = new Properties(); @@ -176,7 +178,7 @@ public class PackageComponentMojo extends AbstractMojo { // are the content the same? if (existing.equals(properties)) { log.debug("No component changes detected"); - return; + return count; } } catch (IOException e) { // ignore @@ -190,12 +192,16 @@ public class PackageComponentMojo extends AbstractMojo { log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "components: " : "component: ") + names); + buildContext.refresh(outFile); + } catch (IOException e) { throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e); } } else { log.debug("No META-INF/services/org/apache/camel/component directory found. Are you sure you have created a Camel component?"); } + + return count; } private static void enrichComponentJsonFiles(Log log, MavenProject project, File buildDir, Map<String, String> components) throws MojoExecutionException { 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 d7f2361..afbd13b 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 @@ -31,7 +31,6 @@ import java.util.Map; import java.util.Properties; import org.apache.maven.artifact.Artifact; -import org.apache.maven.model.Resource; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -95,7 +94,7 @@ public class PackageDataFormatMojo extends AbstractMojo { prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir, buildContext); } - public static void prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir, + public static int prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper, File dataFormatOutDir, File schemaOutDir, BuildContext buildContext) throws MojoExecutionException { File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/"); @@ -107,7 +106,7 @@ public class PackageDataFormatMojo extends AbstractMojo { } if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/dataformat")) { - return; + return 0; } Map<String, String> javaTypes = new HashMap<>(); @@ -161,7 +160,9 @@ public class PackageDataFormatMojo extends AbstractMojo { String json = loadText(is); DataFormatModel dataFormatModel = extractDataFormatModel(project, json, modelName, name, javaType); - log.debug("Model " + dataFormatModel); + if (log.isDebugEnabled()) { + log.debug("Model: " + dataFormatModel); + } // build json schema for the data format String properties = after(json, " \"properties\": {"); @@ -171,7 +172,9 @@ public class PackageDataFormatMojo extends AbstractMojo { properties = prepareJsonProperties(name, properties); String schema = createParameterJsonSchema(dataFormatModel, properties); - log.debug("JSon schema\n" + schema); + if (log.isDebugEnabled()) { + log.debug("JSon schema:\n" + schema); + } // write this to the directory File dir = new File(schemaOutDir, schemaSubDirectory(dataFormatModel.getJavaType())); @@ -181,6 +184,9 @@ public class PackageDataFormatMojo extends AbstractMojo { OutputStream fos = buildContext.newFileOutputStream(out); fos.write(schema.getBytes()); fos.close(); + + buildContext.refresh(out); + if (log.isDebugEnabled()) { log.debug("Generated " + out + " containing JSon schema for " + name + " data format"); } @@ -221,7 +227,7 @@ public class PackageDataFormatMojo extends AbstractMojo { // are the content the same? if (existing.equals(properties)) { log.debug("No dataformat changes detected"); - return; + return count; } } catch (IOException e) { // ignore @@ -235,12 +241,16 @@ public class PackageDataFormatMojo extends AbstractMojo { log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "dataformats: " : "dataformat: ") + names); + buildContext.refresh(outFile); + } catch (IOException e) { throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e); } } else { log.debug("No META-INF/services/org/apache/camel/dataformat directory found. Are you sure you have created a Camel data format?"); } + + return count; } private static DataFormatModel extractDataFormatModel(MavenProject project, String json, String modelName, String name, String javaType) throws Exception { 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 4bdc8f7..e342db6 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 @@ -48,7 +48,7 @@ public final class PackageHelper { } String path = file.getPath() + "/" + suffix; if (log.isDebugEnabled()) { - log.debug("checking if " + path + " (" + r.getDirectory() + "/" + suffix + ") has changed."); + log.debug("Checking if " + path + " (" + r.getDirectory() + "/" + suffix + ") has changed."); } if (buildContext.hasDelta(path)) { log.debug("Indeed " + suffix + " has changed."); 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 2e80c8c..4aca430 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 @@ -31,7 +31,6 @@ import java.util.Map; import java.util.Properties; import org.apache.maven.artifact.Artifact; -import org.apache.maven.model.Resource; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -95,7 +94,7 @@ public class PackageLanguageMojo extends AbstractMojo { prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir, buildContext); } - public static void prepareLanguage(Log log, MavenProject project, MavenProjectHelper projectHelper, File languageOutDir, + public static int 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/"); @@ -107,7 +106,7 @@ public class PackageLanguageMojo extends AbstractMojo { } if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/language")) { - return; + return 0; } Map<String, String> javaTypes = new HashMap<>(); @@ -201,12 +200,16 @@ public class PackageLanguageMojo extends AbstractMojo { languageModel.setFirstVersion(row.get("firstVersion")); } } - log.debug("Model " + languageModel); + if (log.isDebugEnabled()) { + log.debug("Model: " + languageModel); + } // build json schema for the data format String properties = after(json, " \"properties\": {"); String schema = createParameterJsonSchema(languageModel, properties); - log.debug("JSon schema\n" + schema); + if (log.isDebugEnabled()) { + log.debug("JSon schema\n" + schema); + } // write this to the directory File dir = new File(schemaOutDir, schemaSubDirectory(languageModel.getJavaType())); @@ -218,6 +221,7 @@ public class PackageLanguageMojo extends AbstractMojo { fos.close(); buildContext.refresh(out); + if (log.isDebugEnabled()) { log.debug("Generated " + out + " containing JSon schema for " + name + " language"); } @@ -258,7 +262,7 @@ public class PackageLanguageMojo extends AbstractMojo { // are the content the same? if (existing.equals(properties)) { log.debug("No language changes detected"); - return; + return count; } } catch (IOException e) { // ignore @@ -272,12 +276,16 @@ public class PackageLanguageMojo extends AbstractMojo { log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "languages: " : "language: ") + names); + buildContext.refresh(outFile); + } catch (IOException e) { throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e); } } else { log.debug("No META-INF/services/org/apache/camel/language directory found. Are you sure you have created a Camel language?"); } + + return count; } private static String readClassFromCamelResource(File file, StringBuilder buffer, BuildContext buildContext) throws MojoExecutionException { diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java index 565cb70..917d180 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java @@ -42,7 +42,7 @@ 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. + * Analyses the Camel plugins in a project and generates legal files. */ @Mojo(name = "generate-legal", threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES) public class PackageLegalMojo extends AbstractMojo { @@ -85,11 +85,12 @@ public class PackageLegalMojo extends AbstractMojo { projectHelper.addResource(project, legalOutDir.getPath(), Collections.singletonList("**/*"), Collections.emptyList()); } - public void processLegal(Path legalOutDir) { + public void processLegal(Path legalOutDir) throws MojoExecutionException { // Only take care about camel legal stuff if (!"org.apache.camel".equals(project.getGroupId())) { return; } + boolean hasLicense = project.getResources().stream() .map(Resource::getDirectory) .map(Paths::get) @@ -100,7 +101,7 @@ public class PackageLegalMojo extends AbstractMojo { String license = IOUtils.toString(isLicense, StandardCharsets.UTF_8); updateResource(legalOutDir.resolve("META-INF").resolve("LICENSE.txt"), license); } catch (IOException e) { - throw new IOError(e); + throw new MojoExecutionException("Failed to write legal files. Reason: " + e, e); } } boolean hasNotice = project.getResources().stream() @@ -113,7 +114,7 @@ public class PackageLegalMojo extends AbstractMojo { String notice = IOUtils.toString(isNotice, StandardCharsets.UTF_8); updateResource(legalOutDir.resolve("META-INF").resolve("NOTICE.txt"), notice); } catch (IOException e) { - throw new IOError(e); + throw new MojoExecutionException("Failed to write legal files. Reason: " + e, e); } } } diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java index e4cdaa6..8b18fc1 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageOtherMojo.java @@ -83,12 +83,6 @@ public class PackageOtherMojo extends AbstractMojo { * @throws MojoFailureException something bad happened... */ public void execute() throws MojoExecutionException, MojoFailureException { - prepareOthers(getLog(), project, projectHelper, otherOutDir, schemaOutDir, buildContext); - } - - public static void prepareOthers(Log log, MavenProject project, MavenProjectHelper projectHelper, File otherOutDir, - File schemaOutDir, BuildContext buildContext) throws MojoExecutionException { - File f = new File(project.getBasedir(), "target/classes"); File comp = new File(f, "META-INF/services/org/apache/camel/component"); if (comp.exists() && comp.isDirectory()) { @@ -103,7 +97,11 @@ public class PackageOtherMojo extends AbstractMojo { return; } - // okay none of those then this is a other kind of artifact + prepareOthers(getLog(), project, projectHelper, otherOutDir, schemaOutDir, buildContext); + } + + public static void prepareOthers(Log log, MavenProject project, MavenProjectHelper projectHelper, File otherOutDir, + File schemaOutDir, BuildContext buildContext) throws MojoExecutionException { // first we need to setup the output directory because the next check // can stop the build before the end and eclipse always needs to know about that directory @@ -111,12 +109,6 @@ public class PackageOtherMojo extends AbstractMojo { projectHelper.addResource(project, otherOutDir.getPath(), Collections.singletonList("**/other.properties"), Collections.emptyList()); } - if (!PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/component") - && !PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/dataformat") - && !PackageHelper.haveResourcesChanged(log, project, buildContext, "META-INF/services/org/apache/camel/language")) { - return; - } - String name = project.getArtifactId(); // strip leading camel- if (name.startsWith("camel-")) { @@ -144,7 +136,9 @@ public class PackageOtherMojo extends AbstractMojo { } otherModel.setTitle(title); - log.debug("Model " + otherModel); + if (log.isDebugEnabled()) { + log.debug("Model: " + otherModel); + } // write this to the directory File dir = schemaOutDir; @@ -158,7 +152,9 @@ public class PackageOtherMojo extends AbstractMojo { buildContext.refresh(out); - log.debug("Generated " + out + " containing JSon schema for " + name + " other"); + if (log.isDebugEnabled()) { + log.debug("Generated " + out + " containing JSon schema for " + name + " other"); + } } catch (Exception e) { throw new MojoExecutionException("Error loading other model. Reason: " + e, e); } @@ -206,6 +202,8 @@ public class PackageOtherMojo extends AbstractMojo { log.info("Generated " + outFile); + buildContext.refresh(outFile); + } catch (IOException e) { throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e); } 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 e0642f3..98f55cd 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 @@ -115,10 +115,14 @@ public class PrepareComponentMojo extends AbstractMojo { * @throws org.apache.maven.plugin.MojoFailureException something bad happened... */ public void execute() throws MojoExecutionException, MojoFailureException { - prepareComponent(getLog(), project, projectHelper, buildDir, componentOutDir, buildContext); - prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir, buildContext); - prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir, buildContext); - prepareOthers(getLog(), project, projectHelper, otherOutDir, schemaOutDir, buildContext); + int count = 0; + count += prepareComponent(getLog(), project, projectHelper, buildDir, componentOutDir, buildContext); + count += prepareDataFormat(getLog(), project, projectHelper, dataFormatOutDir, schemaOutDir, buildContext); + count += prepareLanguage(getLog(), project, projectHelper, languageOutDir, schemaOutDir, buildContext); + if (count == 0) { + // okay its not any of the above then its other + prepareOthers(getLog(), project, projectHelper, otherOutDir, schemaOutDir, buildContext); + } } }