This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 2ce5df2996f CAMEL-18188: camel-jbang - Use apache maven to download JARs instead of groovy grape 2ce5df2996f is described below commit 2ce5df2996f49f3ac088c4d98ccdcc8ab63046fb Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Jun 13 15:37:40 2022 +0200 CAMEL-18188: camel-jbang - Use apache maven to download JARs instead of groovy grape --- .../java/org/apache/camel/main/DependencyUtil.java | 8 +++----- .../java/org/apache/camel/main/DownloaderHelper.java | 18 +++++++++++++----- .../java/org/apache/camel/main/DependencyUtilTest.java | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java index 46aa80fdd50..706374ae33a 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java @@ -39,10 +39,10 @@ final class DependencyUtil { public static List<MavenArtifact> resolveDependenciesViaAether( List<String> depIds, List<String> customRepos, - boolean offline, boolean updateCache, boolean transitively) { + boolean offline, boolean transitively) { ConfigurableMavenResolverSystem resolver = Maven.configureResolver() - .withMavenCentralRepo(true) + .withMavenCentralRepo(false) .workOffline(offline); if (customRepos != null) { @@ -50,9 +50,7 @@ final class DependencyUtil { String repo = customRepos.get(i); MavenRemoteRepository repository = MavenRemoteRepositories.createRemoteRepository("custom" + i + 1, repo, "default"); - if (updateCache) { - repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_ALWAYS); - } + repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_NEVER); resolver.withRemoteRepo(repository); } } diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java index 1b45164789d..6b7abfe6aad 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java @@ -19,6 +19,7 @@ package org.apache.camel.main; import java.io.File; import java.net.URL; import java.net.URLClassLoader; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -35,6 +36,7 @@ public final class DownloaderHelper { private static final Logger LOG = LoggerFactory.getLogger(DownloaderHelper.class); private static final String CP = System.getProperty("java.class.path"); + private static final String APACHE_SNAPSHOT_REPO = "https://repository.apache.org/snapshots"; private static final DownloadThreadPool DOWNLOAD_THREAD_POOL = new DownloadThreadPool(); private DownloaderHelper() { @@ -69,19 +71,25 @@ public final class DownloaderHelper { DOWNLOAD_THREAD_POOL.download(LOG, () -> { LOG.debug("Downloading: {}", gav); List<String> deps = List.of(gav); - List<String> customRepos = null; + List<String> customRepos = new ArrayList<>(); + // include Apache snapshot to make it easy to use upcoming release + customRepos.add(APACHE_SNAPSHOT_REPO); if (repos != null) { - customRepos = Arrays.stream(repos.split(",")).collect(Collectors.toList()); + customRepos.addAll(Arrays.stream(repos.split(",")).collect(Collectors.toList())); } - List<MavenArtifact> artifacts = DependencyUtil.resolveDependenciesViaAether(deps, customRepos, false, true, true); + List<MavenArtifact> artifacts = DependencyUtil.resolveDependenciesViaAether(deps, customRepos, false, true); LOG.debug("Resolved {} -> [{}]", gav, artifacts); DependencyDownloaderClassLoader classLoader = (DependencyDownloaderClassLoader) camelContext.getApplicationContextClassLoader(); for (MavenArtifact a : artifacts) { File file = a.getFile(); - classLoader.addFile(file); - LOG.trace("Added classpath: {}", a.getGav()); + // only add to classpath if not already present + if (!alreadyOnClasspath(camelContext, a.getGav().getGroupId(), a.getGav().getArtifactId(), + a.getGav().getVersion())) { + classLoader.addFile(file); + LOG.trace("Added classpath: {}", a.getGav()); + } } }, gav); } diff --git a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java index 374b17fc6ed..d6473fba987 100644 --- a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java +++ b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java @@ -26,7 +26,7 @@ public class DependencyUtilTest { @Test public void testDownload() throws Exception { List<String> deps = List.of("org.apache.camel:camel-core:3.17.0"); - List<MavenArtifact> answer = DependencyUtil.resolveDependenciesViaAether(deps, null, false, false, true); + List<MavenArtifact> answer = DependencyUtil.resolveDependenciesViaAether(deps, null, false, true); Assertions.assertNotNull(answer); Assertions.assertTrue(answer.size() > 15); }