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 4d27866c91f CAMEL-18706: camel-jbang - Automatic include ASF snapshot repo if using SNAPSHOT jars 4d27866c91f is described below commit 4d27866c91f456b003eead3987497a6158be409d Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Nov 10 10:33:13 2022 +0100 CAMEL-18706: camel-jbang - Automatic include ASF snapshot repo if using SNAPSHOT jars --- .../dsl/jbang/core/commands/ExportBaseCommand.java | 27 +++++++++++++ .../dsl/jbang/core/commands/ExportCamelMain.java | 10 ++++- .../dsl/jbang/core/commands/ExportQuarkus.java | 38 ++++++++++++++----- .../dsl/jbang/core/commands/ExportSpringBoot.java | 44 +++++++++++++--------- .../resources/templates/apache-snapshot-maven.tmpl | 13 ------- .../main/resources/templates/spring-boot-pom.tmpl | 2 - .../camel-jbang-main/dist/CamelJBang.java | 2 +- .../src/main/jbang/main/CamelJBang.java | 2 +- .../main/download/MavenDependencyDownloader.java | 2 +- 9 files changed, 93 insertions(+), 47 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 f5ddd6967e0..88f7cb9aa90 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 @@ -33,6 +33,7 @@ import java.util.TreeSet; import java.util.function.Function; import java.util.stream.Collectors; +import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.dsl.jbang.core.common.RuntimeUtil; import org.apache.camel.main.download.MavenGav; import org.apache.camel.util.CamelCaseOrderedProperties; @@ -451,6 +452,32 @@ abstract class ExportBaseCommand extends CamelCommand { return key + "=" + value; } + /** + * Gets the maven repositories + * + * @param prop settings + * @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"); + + 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/"; + } + } + + return answer; + } + protected static void safeCopy(File source, File target, boolean override) throws Exception { if (!source.exists()) { return; 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 3dd641752bf..6647124f43e 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 @@ -138,7 +138,7 @@ class ExportCamelMain extends Export { Properties prop = new CamelCaseOrderedProperties(); RuntimeUtil.loadProperties(prop, settings); - String repos = prop.getProperty("camel.jbang.repos"); + String repos = getMavenRepos(prop, camelVersion); if (repos == null) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); } else { @@ -149,6 +149,14 @@ class ExportCamelMain extends Export { sb.append(" <repository>\n"); sb.append(" <id>custom").append(i++).append("</id>\n"); sb.append(" <url>").append(repo).append("</url>\n"); + if (repo.contains("snapshots")) { + sb.append(" <releases>\n"); + sb.append(" <enabled>false</enabled>\n"); + sb.append(" </releases>\n"); + sb.append(" <snapshots>\n"); + sb.append(" <enabled>true</enabled>\n"); + sb.append(" </snapshots>\n"); + } sb.append(" </repository>\n"); } sb.append(" </repositories>\n"); 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 9bf218d6ea6..f996cf24302 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 @@ -175,7 +175,12 @@ class ExportQuarkus extends Export { String context = IOHelper.loadText(is); IOHelper.close(is); - CamelCatalog catalog = loadQuarkusCatalog(); + Properties prop = new CamelCaseOrderedProperties(); + RuntimeUtil.loadProperties(prop, settings); + // quarkus controls the camel version + String repos = getMavenRepos(prop, quarkusVersion); + + CamelCatalog catalog = loadQuarkusCatalog(repos); if (camelVersion == null) { camelVersion = catalog.getCatalogVersion(); } @@ -190,16 +195,18 @@ class ExportQuarkus extends Export { context = context.replaceAll("\\{\\{ \\.JavaVersion }}", javaVersion); context = context.replaceAll("\\{\\{ \\.CamelVersion }}", camelVersion); - Properties prop = new CamelCaseOrderedProperties(); - RuntimeUtil.loadProperties(prop, settings); - String repos = prop.getProperty("camel.jbang.repos"); if (repos == null) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); } else { StringBuilder sb = new StringBuilder(); for (String repo : repos.split(",")) { sb.append(" maven {\n"); - sb.append(" url: '").append(repo).append("'\n"); + sb.append(" url '").append(repo).append("'\n"); + if (repo.contains("snapshots")) { + sb.append(" mavenContent {\n"); + sb.append(" snapshotsOnly()\n"); + sb.append(" }\n"); + } sb.append(" }\n"); } context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString()); @@ -276,7 +283,12 @@ class ExportQuarkus extends Export { String context = IOHelper.loadText(is); IOHelper.close(is); - CamelCatalog catalog = loadQuarkusCatalog(); + Properties prop = new CamelCaseOrderedProperties(); + RuntimeUtil.loadProperties(prop, settings); + // quarkus controls the camel version + String repos = getMavenRepos(prop, quarkusVersion); + + CamelCatalog catalog = loadQuarkusCatalog(repos); if (camelVersion == null) { camelVersion = catalog.getCatalogVersion(); } @@ -290,9 +302,6 @@ class ExportQuarkus extends Export { context = context.replaceFirst("\\{\\{ \\.JavaVersion }}", javaVersion); context = context.replaceFirst("\\{\\{ \\.CamelVersion }}", camelVersion); - Properties prop = new CamelCaseOrderedProperties(); - RuntimeUtil.loadProperties(prop, settings); - String repos = prop.getProperty("camel.jbang.repos"); if (repos == null) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); } else { @@ -303,6 +312,14 @@ class ExportQuarkus extends Export { sb.append(" <repository>\n"); sb.append(" <id>custom").append(i++).append("</id>\n"); sb.append(" <url>").append(repo).append("</url>\n"); + if (repo.contains("snapshots")) { + sb.append(" <releases>\n"); + sb.append(" <enabled>false</enabled>\n"); + sb.append(" </releases>\n"); + sb.append(" <snapshots>\n"); + sb.append(" <enabled>true</enabled>\n"); + sb.append(" </snapshots>\n"); + } sb.append(" </repository>\n"); } sb.append(" </repositories>\n"); @@ -370,12 +387,13 @@ class ExportQuarkus extends Export { return answer; } - private CamelCatalog loadQuarkusCatalog() { + private CamelCatalog loadQuarkusCatalog(String repos) { CamelCatalog answer = new DefaultCamelCatalog(true); // use kamelet-main to dynamic download dependency via maven KameletMain main = new KameletMain(); try { + main.setRepos(repos); main.start(); // shrinkwrap does not return POM file as result (they are hardcoded to be filtered out) 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 50e63f67092..4a31edff20c 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 @@ -143,7 +143,11 @@ class ExportSpringBoot extends Export { String context = readResourceTemplate("templates/spring-boot-pom.tmpl"); - CamelCatalog catalog = loadSpringBootCatalog(camelSpringBootVersion); + Properties prop = new CamelCaseOrderedProperties(); + RuntimeUtil.loadProperties(prop, settings); + String repos = getMavenRepos(prop, camelSpringBootVersion); + + CamelCatalog catalog = loadSpringBootCatalog(repos, camelSpringBootVersion); String camelVersion = catalog.getLoadedVersion(); context = context.replaceFirst("\\{\\{ \\.GroupId }}", ids[0]); @@ -166,10 +170,6 @@ class ExportSpringBoot extends Export { context = context.replaceFirst(Pattern.quote("{{ .jkubeProperties }}"), Matcher.quoteReplacement(sbJKube.toString())); - Properties prop = new CamelCaseOrderedProperties(); - RuntimeUtil.loadProperties(prop, settings); - - String repos = prop.getProperty("camel.jbang.repos"); if (repos == null) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); } else { @@ -180,6 +180,14 @@ class ExportSpringBoot extends Export { sb.append(" <repository>\n"); sb.append(" <id>custom").append(i++).append("</id>\n"); sb.append(" <url>").append(repo).append("</url>\n"); + if (repo.contains("snapshots")) { + sb.append(" <releases>\n"); + sb.append(" <enabled>false</enabled>\n"); + sb.append(" </releases>\n"); + sb.append(" <snapshots>\n"); + sb.append(" <enabled>true</enabled>\n"); + sb.append(" </snapshots>\n"); + } sb.append(" </repository>\n"); } sb.append(" </repositories>\n"); @@ -233,13 +241,6 @@ class ExportSpringBoot extends Export { } context = context.replaceFirst("\\{\\{ \\.CamelDependencies }}", sb.toString()); - // add apache snapshot repository if camel version ends with SNAPSHOT - String contextSnapshot = ""; - if (camelVersion.endsWith("SNAPSHOT")) { - contextSnapshot = readResourceTemplate("templates/apache-snapshot-maven.tmpl"); - } - context = context.replaceFirst(Pattern.quote("{{ .snapshotRepository }}"), Matcher.quoteReplacement(contextSnapshot)); - // add jkube profiles if there is jkube version property String jkubeProfiles = ""; if (allProps.getProperty("jkube.version") != null) { @@ -255,7 +256,11 @@ class ExportSpringBoot extends Export { String context = readResourceTemplate("templates/spring-boot-build-gradle.tmpl"); - CamelCatalog catalog = loadSpringBootCatalog(camelSpringBootVersion); + Properties prop = new CamelCaseOrderedProperties(); + RuntimeUtil.loadProperties(prop, settings); + String repos = getMavenRepos(prop, camelSpringBootVersion); + + CamelCatalog catalog = loadSpringBootCatalog(repos, camelSpringBootVersion); String camelVersion = catalog.getLoadedVersion(); context = context.replaceFirst("\\{\\{ \\.GroupId }}", ids[0]); @@ -265,16 +270,18 @@ class ExportSpringBoot extends Export { context = context.replaceFirst("\\{\\{ \\.JavaVersion }}", javaVersion); context = context.replaceAll("\\{\\{ \\.CamelVersion }}", camelVersion); - Properties prop = new CamelCaseOrderedProperties(); - RuntimeUtil.loadProperties(prop, settings); - String repos = prop.getProperty("camel.jbang.repos"); if (repos == null) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); } else { StringBuilder sb = new StringBuilder(); for (String repo : repos.split(",")) { sb.append(" maven {\n"); - sb.append(" url: '").append(repo).append("'\n"); + sb.append(" url '").append(repo).append("'\n"); + if (repo.contains("snapshots")) { + sb.append(" mavenContent {\n"); + sb.append(" snapshotsOnly()\n"); + sb.append(" }\n"); + } sb.append(" }\n"); } context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString()); @@ -365,7 +372,7 @@ class ExportSpringBoot extends Export { return super.applicationPropertyLine(key, value); } - private CamelCatalog loadSpringBootCatalog(String version) throws Exception { + private CamelCatalog loadSpringBootCatalog(String repos, String version) throws Exception { CamelCatalog answer = new DefaultCamelCatalog(); if (version == null) { version = answer.getCatalogVersion(); @@ -374,6 +381,7 @@ class ExportSpringBoot extends Export { // use kamelet-main to dynamic download dependency via maven KameletMain main = new KameletMain(); try { + main.setRepos(repos); main.start(); // wrap downloaded catalog files in an isolated classloader diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/apache-snapshot-maven.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/apache-snapshot-maven.tmpl deleted file mode 100644 index 251e3f10ffa..00000000000 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/apache-snapshot-maven.tmpl +++ /dev/null @@ -1,13 +0,0 @@ - <repositories> - <repository> - <id>apache.snapshots</id> - <name>Apache Development Snapshot Repository</name> - <url>https://repository.apache.org/content/repositories/snapshots/</url> - <releases> - <enabled>false</enabled> - </releases> - <snapshots> - <enabled>true</enabled> - </snapshots> - </repository> - </repositories> \ No newline at end of file diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl index 18a185a7415..361297da6b6 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl @@ -83,8 +83,6 @@ </plugins> </build> -{{ .snapshotRepository }} - {{ .jkubeProfiles }} </project> diff --git a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java index a927980ab79..c51f7952913 100755 --- a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java +++ b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java @@ -18,7 +18,7 @@ */ //JAVA 11+ -//REPOS mavencentral,apache=https://repository.apache.org/snapshots +//REPOS mavencentral,apache-snapshot=http://repository.apache.org/content/groups/snapshots/ //DEPS org.apache.camel:camel-bom:${camel.jbang.version:3.19.0}@pom //DEPS org.apache.camel:camel-jbang-core:${camel.jbang.version:3.19.0} //DEPS org.apache.camel.kamelets:camel-kamelets:${camel-kamelets.version:0.9.3} diff --git a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java index a927980ab79..c51f7952913 100755 --- a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java +++ b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java @@ -18,7 +18,7 @@ */ //JAVA 11+ -//REPOS mavencentral,apache=https://repository.apache.org/snapshots +//REPOS mavencentral,apache-snapshot=http://repository.apache.org/content/groups/snapshots/ //DEPS org.apache.camel:camel-bom:${camel.jbang.version:3.19.0}@pom //DEPS org.apache.camel:camel-jbang-core:${camel.jbang.version:3.19.0} //DEPS org.apache.camel.kamelets:camel-kamelets:${camel-kamelets.version:0.9.3} 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 b8a29a8b27f..eaf5ecba2d5 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 @@ -1094,7 +1094,7 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende String id = "custom" + customCount++; RepositoryPolicy releasePolicy = fresh ? POLICY_FRESH : POLICY_DEFAULT; if (repositoryURLs.add(url)) { - if (url.getHost().equals("repository.apache.org") && url.getPath().startsWith("/snapshots")) { + if (url.getHost().equals("repository.apache.org") && url.getPath().contains("/snapshots")) { apacheSnapshotsIncluded = true; repositories.add(apacheSnapshots); } else {