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 61afb9967a2 CAMEL-18983: camel-jbang - export - Add known maven repos
such when using camel-jira.
61afb9967a2 is described below
commit 61afb9967a2c5c314c677504f0f9ab6683d90291
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Mar 6 09:26:00 2023 +0100
CAMEL-18983: camel-jbang - export - Add known maven repos such when using
camel-jira.
---
.../dsl/jbang/core/commands/ExportBaseCommand.java | 26 +++++++++++++++-------
.../dsl/jbang/core/commands/ExportCamelMain.java | 2 +-
.../dsl/jbang/core/commands/ExportQuarkus.java | 4 ++--
.../dsl/jbang/core/commands/ExportSpringBoot.java | 4 ++--
.../apache/camel/dsl/jbang/core/commands/Run.java | 9 ++++++++
.../camel/main/download/DownloadListener.java | 7 ++++++
.../main/download/MavenDependencyDownloader.java | 13 +++++++++--
7 files changed, 50 insertions(+), 15 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index b0efa58334b..4a379a0d3e2 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.StringJoiner;
import java.util.TreeSet;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -472,23 +473,32 @@ abstract class ExportBaseCommand extends CamelCommand {
* @param camelVersion the camel version
* @return repositories or null if none are in use
*/
- protected static String getMavenRepos(Properties prop, String
camelVersion) {
- String answer = prop.getProperty("camel.jbang.repos");
+ protected static String getMavenRepos(File settings, Properties prop,
String camelVersion) throws Exception {
+ StringJoiner sj = new StringJoiner(",");
+
+ String repos = prop.getProperty("camel.jbang.repos");
+ if (repos != null) {
+ sj.add(repos);
+ }
if (camelVersion == null) {
camelVersion = new DefaultCamelCatalog().getCatalogVersion();
}
-
// include apache snapshot repo if we use SNAPSHOT version of Camel
if (camelVersion.endsWith("-SNAPSHOT")) {
- if (answer == null) {
- answer =
"https://repository.apache.org/content/groups/snapshots/";
- } else if
(!answer.contains("https://repository.apache.org/content/groups/snapshots/")) {
- answer +=
",https://repository.apache.org/content/groups/snapshots/";
+ sj.add("https://repository.apache.org/content/groups/snapshots/");
+ }
+
+ // there may be additional extra repositories
+ List<String> lines = Files.readAllLines(settings.toPath());
+ for (String line : lines) {
+ if (line.startsWith("repository=")) {
+ String r = StringHelper.after(line, "repository=");
+ sj.add(r);
}
}
- return answer;
+ return sj.toString();
}
protected static boolean hasModeline(File settings) {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index 73e6c079f52..fe86d723193 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -141,7 +141,7 @@ class ExportCamelMain extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = getMavenRepos(prop, camelVersion);
+ String repos = getMavenRepos(settings, prop, camelVersion);
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}",
"");
} else {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index 6731c7528c8..923ddcee67f 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -224,7 +224,7 @@ class ExportQuarkus extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
// quarkus controls the camel version
- String repos = getMavenRepos(prop, quarkusVersion);
+ String repos = getMavenRepos(settings, prop, quarkusVersion);
CamelCatalog catalog = CatalogLoader.loadQuarkusCatalog(repos,
quarkusVersion);
if (camelVersion == null) {
@@ -333,7 +333,7 @@ class ExportQuarkus extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
// quarkus controls the camel version
- String repos = getMavenRepos(prop, quarkusVersion);
+ String repos = getMavenRepos(settings, prop, quarkusVersion);
CamelCatalog catalog = CatalogLoader.loadQuarkusCatalog(repos,
quarkusVersion);
if (camelVersion == null) {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index 22b9ee8d483..f2ddbf6cc12 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -141,7 +141,7 @@ class ExportSpringBoot extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = getMavenRepos(prop, camelSpringBootVersion);
+ String repos = getMavenRepos(settings, prop, camelSpringBootVersion);
CamelCatalog catalog = CatalogLoader.loadSpringBootCatalog(repos,
camelSpringBootVersion);
String camelVersion = catalog.getLoadedVersion();
@@ -254,7 +254,7 @@ class ExportSpringBoot extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = getMavenRepos(prop, camelSpringBootVersion);
+ String repos = getMavenRepos(settings, prop, camelSpringBootVersion);
CamelCatalog catalog = CatalogLoader.loadSpringBootCatalog(repos,
camelSpringBootVersion);
String camelVersion = catalog.getLoadedVersion();
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index ac999f2cdce..7bd9a459048 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -1045,6 +1045,7 @@ class Run extends CamelCommand {
private class RunDownloadListener implements DownloadListener {
final Set<String> downloaded = new HashSet<>();
+ final Set<String> repos = new HashSet<>();
final Set<String> kamelets = new HashSet<>();
final Set<String> modelines = new HashSet<>();
@@ -1066,6 +1067,14 @@ class Run extends CamelCommand {
onDownloadDependency(groupId, artifactId, version);
}
+ @Override
+ public void onExtraRepository(String repo) {
+ if (!repos.contains(repo)) {
+ writeSettings("repository", repo);
+ repos.add(repo);
+ }
+ }
+
@Override
public void onLoadingKamelet(String name) {
if (!kamelets.contains(name)) {
diff --git
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
index d9707c31197..842aa0c5ceb 100644
---
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
+++
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
@@ -33,6 +33,13 @@ public interface DownloadListener {
// noop
}
+ /**
+ * Some dependencies require third-party maven repositories to be
downloaded.
+ */
+ default void onExtraRepository(String repo) {
+ // noop
+ }
+
/**
* Uses an existing already downloaded dependency
*/
diff --git
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
index d3941a51a02..fbe9edcb7d8 100644
---
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
+++
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
@@ -382,11 +382,13 @@ public class MavenDependencyDownloader extends
ServiceSupport implements Depende
if (!apacheSnapshotsIncluded && "org.apache.camel".equals(groupId)
&& version.contains("SNAPSHOT")) {
repositories.add(apacheSnapshots);
}
+ List<RemoteRepository> extaRepositories = new ArrayList<>();
// include extra repositories (if any)
- repositories.addAll(resolveExtraRepositories(extraRepos));
+ extaRepositories.addAll(resolveExtraRepositories(extraRepos));
// and from known extra repositories (if any)
String known = knownReposResolver.getRepo(artifactId);
- repositories.addAll(resolveExtraRepositories(known));
+ extaRepositories.addAll(resolveExtraRepositories(known));
+ repositories.addAll(extaRepositories);
List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps,
repositories, transitively);
List<File> files = new ArrayList<>();
@@ -417,6 +419,13 @@ public class MavenDependencyDownloader extends
ServiceSupport implements Depende
listener.onDownloadedDependency(groupId, artifactId,
version);
}
}
+ if (!extaRepositories.isEmpty()) {
+ for (RemoteRepository repo : extaRepositories) {
+ for (DownloadListener listener : downloadListeners) {
+ listener.onExtraRepository(repo.getUrl());
+ }
+ }
+ }
}, gav);
}