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/26 14:12:18 UTC
[2/3] camel git commit: More m2e improvements for
camel-package-maven-plugin
More m2e improvements for camel-package-maven-plugin
- Make generated folder visible in Eclipse
- Uses build context output stream for better integration
- Avoid generating json files when input is unchanged
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa88e170
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa88e170
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa88e170
Branch: refs/heads/master
Commit: fa88e17088d521e50712ccf3a837ee3c61821d12
Parents: ef99689
Author: Victor Noël <vi...@linagora.com>
Authored: Fri May 22 15:36:51 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue May 26 11:35:02 2015 +0200
----------------------------------------------------------------------
.../maven/packaging/PackageComponentMojo.java | 26 ++++++-----
.../maven/packaging/PackageDataFormatMojo.java | 48 ++++++++++++--------
.../maven/packaging/PackageLanguageMojo.java | 40 ++++++++++------
3 files changed, 70 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/fa88e170/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 92ed09d..b3d8207 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
@@ -17,10 +17,9 @@
package org.apache.camel.maven.packaging;
import java.io.File;
-import java.io.FileWriter;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.OutputStream;
+import java.util.Collections;
import java.util.Properties;
import org.apache.maven.model.Resource;
@@ -84,13 +83,19 @@ 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/");
+
+ // 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
+ if (projectHelper != null) {
+ projectHelper.addResource(project, componentOutDir.getPath(), Collections.singletonList("**/component.properties"), Collections.emptyList());
+ }
+
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()) {
@@ -136,14 +141,13 @@ public class PackageComponentMojo extends AbstractMojo {
camelMetaDir.mkdirs();
File outFile = new File(camelMetaDir, "component.properties");
try {
- properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
- buildContext.refresh(outFile);
+ try(OutputStream os = buildContext.newFileOutputStream(outFile)) {
+ properties.store(os, "Generated by camel-package-maven-plugin");
+ }
+
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");
- projectHelper.addResource(project, componentOutDir.getPath(), includes, new ArrayList<String>());
projectHelper.attachArtifact(project, "properties", "camelComponent", outFile);
}
} catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/camel/blob/fa88e170/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 9ddfe28..b398787 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
@@ -16,15 +16,18 @@
*/
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;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -41,10 +44,6 @@ 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;
-import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
-
/**
* Analyses the Camel plugins in a project and generates extra descriptor information for easier auto-discovery in Camel.
*
@@ -105,12 +104,18 @@ public class PackageDataFormatMojo extends AbstractMojo {
public static void 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/");
+
+ // 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
+ if (projectHelper != null) {
+ projectHelper.addResource(project, dataFormatOutDir.getPath(), Collections.singletonList("**/dataformat.properties"), Collections.emptyList());
+ }
+
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>();
StringBuilder buffer = new StringBuilder();
@@ -139,6 +144,14 @@ public class PackageDataFormatMojo extends AbstractMojo {
buffer.append(name);
}
+ if (!buildContext.hasDelta(file)) {
+ // if this file has not changed,
+ // then no need to store the javatype
+ // for the json file to be generated again
+ // (but we do need the name above!)
+ continue;
+ }
+
// find out the javaType for each data format
try {
String text = loadText(new FileInputStream(file));
@@ -219,11 +232,9 @@ public class PackageDataFormatMojo extends AbstractMojo {
dir.mkdirs();
File out = new File(dir, name + ".json");
- FileOutputStream fos = new FileOutputStream(out, false);
- fos.write(schema.getBytes());
- fos.close();
-
- buildContext.refresh(out);
+ try (OutputStream fos = buildContext.newFileOutputStream(out)) {
+ fos.write(schema.getBytes());
+ }
log.debug("Generated " + out + " containing JSon schema for " + name + " data format");
}
@@ -250,14 +261,13 @@ public class PackageDataFormatMojo extends AbstractMojo {
camelMetaDir.mkdirs();
File outFile = new File(camelMetaDir, "dataformat.properties");
try {
- properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
- buildContext.refresh(outFile);
+ try(OutputStream os = buildContext.newFileOutputStream(outFile)) {
+ properties.store(os, "Generated by camel-package-maven-plugin");
+ }
+
log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "dataformats: " : "dataformat: ") + names);
if (projectHelper != null) {
- List<String> includes = new ArrayList<String>();
- includes.add("**/dataformat.properties");
- projectHelper.addResource(project, dataFormatOutDir.getPath(), includes, new ArrayList<String>());
projectHelper.attachArtifact(project, "properties", "camelDataFormat", outFile);
}
} catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/camel/blob/fa88e170/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 8af508d..6a932cd 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
@@ -22,13 +22,12 @@ import static org.apache.camel.maven.packaging.PackageHelper.parseAsMap;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -105,12 +104,18 @@ public class PackageLanguageMojo extends AbstractMojo {
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/");
+
+ // 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
+ if (projectHelper != null) {
+ projectHelper.addResource(project, languageOutDir.getPath(), Collections.singletonList("**/dataformat.properties"), Collections.emptyList());
+ }
+
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>();
StringBuilder buffer = new StringBuilder();
@@ -139,6 +144,14 @@ public class PackageLanguageMojo extends AbstractMojo {
buffer.append(name);
}
+ if (!buildContext.hasDelta(file)) {
+ // if this file has not changed,
+ // then no need to store the javatype
+ // for the json file to be generated again
+ // (but we do need the name above!)
+ continue;
+ }
+
// find out the javaType for each data format
try {
String text = loadText(new FileInputStream(file));
@@ -215,10 +228,10 @@ public class PackageLanguageMojo extends AbstractMojo {
dir.mkdirs();
File out = new File(dir, name + ".json");
- FileOutputStream fos = new FileOutputStream(out, false);
- fos.write(schema.getBytes());
- fos.close();
-
+ try (OutputStream fos = buildContext.newFileOutputStream(out)) {
+ fos.write(schema.getBytes());
+ }
+
buildContext.refresh(out);
log.debug("Generated " + out + " containing JSon schema for " + name + " language");
@@ -246,14 +259,13 @@ public class PackageLanguageMojo extends AbstractMojo {
camelMetaDir.mkdirs();
File outFile = new File(camelMetaDir, "language.properties");
try {
- properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
- buildContext.refresh(outFile);
+ try(OutputStream os = buildContext.newFileOutputStream(outFile)) {
+ properties.store(os, "Generated by camel-package-maven-plugin");
+ }
+
log.info("Generated " + outFile + " containing " + count + " Camel " + (count > 1 ? "languages: " : "language: ") + names);
if (projectHelper != null) {
- List<String> includes = new ArrayList<String>();
- includes.add("**/language.properties");
- projectHelper.addResource(project, languageOutDir.getPath(), includes, new ArrayList<String>());
projectHelper.attachArtifact(project, "properties", "camelLanguage", outFile);
}
} catch (IOException e) {