Close GroovyClassLoader it avoids to have files that can't be deleted on Windows
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/39376f59 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/39376f59 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/39376f59 Branch: refs/heads/master Commit: 39376f59d04ce35e1ca290ab14e3412a7030d2d1 Parents: 6eb2abe Author: Aurelien Pupier <apup...@redhat.com> Authored: Thu Apr 20 14:06:20 2017 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Apr 20 17:07:31 2017 +0200 ---------------------------------------------------------------------- .../maven/DefaultMavenArtifactProvider.java | 41 ++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/39376f59/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java ---------------------------------------------------------------------- diff --git a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java index 99d0a47..1a7f3cb 100644 --- a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java +++ b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java @@ -73,26 +73,27 @@ public class DefaultMavenArtifactProvider implements MavenArtifactProvider { Grape.setEnableAutoDownload(true); - final ClassLoader classLoader = new GroovyClassLoader(); - - Map<String, Object> param = new HashMap<>(); - param.put("classLoader", classLoader); - param.put("group", groupId); - param.put("module", artifactId); - param.put("version", version); - // no need to download transitive dependencies as we only need to check the component or connector itself - param.put("validate", false); - param.put("transitive", false); - - LOG.debug("Downloading {}:{}:{}", groupId, artifactId, version); - Grape.grab(param); - - // the classloader can load content from the downloaded JAR - if (camelCatalog != null) { - scanCamelComponents(camelCatalog, classLoader, names); - } - if (camelConnectorCatalog != null) { - scanCamelConnectors(camelConnectorCatalog, classLoader, groupId, artifactId, version, names); + try (final GroovyClassLoader classLoader = new GroovyClassLoader()){ + + Map<String, Object> param = new HashMap<>(); + param.put("classLoader", classLoader); + param.put("group", groupId); + param.put("module", artifactId); + param.put("version", version); + // no need to download transitive dependencies as we only need to check the component or connector itself + param.put("validate", false); + param.put("transitive", false); + + LOG.debug("Downloading {}:{}:{}", groupId, artifactId, version); + Grape.grab(param); + + // the classloader can load content from the downloaded JAR + if (camelCatalog != null) { + scanCamelComponents(camelCatalog, classLoader, names); + } + if (camelConnectorCatalog != null) { + scanCamelConnectors(camelConnectorCatalog, classLoader, groupId, artifactId, version, names); + } } } catch (Exception e) {