http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java index 131254f..8127999 100644 --- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java +++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java @@ -18,7 +18,6 @@ package org.apache.camel.itest.springboot.util; import java.io.File; import java.io.FileWriter; -import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.security.AccessController; @@ -34,13 +33,13 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.camel.itest.springboot.ITestConfig; import org.apache.camel.itest.springboot.ITestConfigBuilder; import org.apache.camel.itest.springboot.arquillian.SpringBootZipExporterImpl; -import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.jboss.arquillian.container.se.api.ClassPath; import org.jboss.shrinkwrap.api.Archive; @@ -68,7 +67,6 @@ import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinates; import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependencies; import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency; import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependencyExclusion; -import org.junit.Assert; /** * Packages a module in a spring-boot compatible nested-jar structure. @@ -84,10 +82,17 @@ public final class ArquillianPackager { private static final String LIB_FOLDER = "/BOOT-INF/lib"; private static final String CLASSES_FOLDER = "BOOT-INF/classes"; + private static final boolean FAIL_ON_TEST_LIBRARY_MISMATCH = false; + private static final boolean FAIL_ON_RELATED_LIBRARY_MISMATCH = true; + private static final boolean VERSION_EQUALITY_MINOR_VERSION = true; + private ArquillianPackager() { } public static Archive<?> springBootPackage(ITestConfig config) throws Exception { + if (!new File(".").getCanonicalFile().getName().equals("camel-itest-spring-boot")) { + throw new IllegalStateException("In order to run the integration tests, 'camel-itest-spring-boot' must be the working directory. Check your configuration."); + } ExtensionLoader extensionLoader = new ServiceExtensionLoader(Collections.singleton(getExtensionClassloader())); extensionLoader.addOverride(ZipExporter.class, SpringBootZipExporterImpl.class); @@ -187,53 +192,48 @@ public final class ArquillianPackager { for (String depXml : testProvidedDependenciesXml) { if (validTestDependency(config, depXml, commonExclusions)) { depXml = enforceExclusions(config, depXml, commonExclusions); - //depXml = addBOMVersionWhereMissing(config, depXml); + depXml = switchToStarterIfPresent(config, depXml); cleanTestProvidedDependenciesXml.add(depXml); } } - List<String> versionedTestProvidedDependenciesXml = new LinkedList<>(); - if(!cleanTestProvidedDependenciesXml.isEmpty()) { + List<MavenResolvedArtifact> testDependencies = new LinkedList<>(); + if (!cleanTestProvidedDependenciesXml.isEmpty()) { File testProvidedResolverPom = createResolverPom(config, cleanTestProvidedDependenciesXml); - List<MavenResolvedArtifact> artifacts = Arrays.asList(resolver(config) + testDependencies.addAll(Arrays.asList(resolver(config) .loadPomFromFile(testProvidedResolverPom) .importDependencies(scopes.toArray(new ScopeType[0])) .resolve() - .withoutTransitivity() - .asResolvedArtifact()); - - Map<String, String> resolvedVersions = new HashMap<>(); - for(MavenResolvedArtifact art : artifacts) { - String key = art.getCoordinate().getGroupId() + ":" + art.getCoordinate().getArtifactId(); - String val = art.getCoordinate().getVersion(); - resolvedVersions.put(key, val); - } - - for(String dep : cleanTestProvidedDependenciesXml) { - dep = setResolvedVersion(config, dep, resolvedVersions); - versionedTestProvidedDependenciesXml.add(dep); - } - + .withTransitivity() + .asResolvedArtifact())); } - File moduleSpringBootPom = createUserPom(config, versionedTestProvidedDependenciesXml); + File moduleSpringBootPom = createUserPom(config); - List<ScopeType> resolvedScopes = new LinkedList<>(); - resolvedScopes.add(ScopeType.COMPILE); - resolvedScopes.add(ScopeType.RUNTIME); - resolvedScopes.addAll(scopes); +// List<ScopeType> resolvedScopes = new LinkedList<>(); +// resolvedScopes.add(ScopeType.COMPILE); +// resolvedScopes.add(ScopeType.RUNTIME); +// resolvedScopes.addAll(scopes); - List<File> dependencies = new LinkedList<>(); - dependencies.addAll(Arrays.asList(resolver(config) + List<MavenResolvedArtifact> runtimeDependencies = new LinkedList<>(); + runtimeDependencies.addAll(Arrays.asList(resolver(config) .loadPomFromFile(moduleSpringBootPom) - .importDependencies(resolvedScopes.toArray(new ScopeType[0])) + .importRuntimeDependencies() .addDependencies(additionalDependencies) .resolve() .withTransitivity() - .asFile())); + .asResolvedArtifact())); + + + List<MavenResolvedArtifact> dependencyArtifacts = merge(config, runtimeDependencies, testDependencies); + lookForVersionMismatch(config, dependencyArtifacts); + List<File> dependencies = new LinkedList<>(); + for (MavenResolvedArtifact a : dependencyArtifacts) { + dependencies.add(a.asFile()); + } // The spring boot-loader dependency will be added to the main jar, so it should be excluded from the embedded ones excludeDependencyRegex(dependencies, "^spring-boot-loader-[0-9].*"); @@ -281,6 +281,159 @@ public final class ArquillianPackager { return external.build(); } + private static void lookForVersionMismatch(ITestConfig config, List<MavenResolvedArtifact> dependencyArtifacts) { + + Set<String> ignore = new HashSet<>(); + ignore.addAll(config.getIgnoreLibraryMismatch()); + + ignore.add("org.apache.commons"); + ignore.add("commons-beanutils:commons-beanutils"); + ignore.add("io.netty:netty:jar"); // an old version + ignore.add("xml-apis:xml-apis-ext"); + ignore.add("org.scala-lang:scala-compiler"); + ignore.add("org.mortbay.jetty:servlet-api-2.5"); + ignore.add("org.apache.geronimo.specs"); + ignore.add("org.apache.qpid:qpid-jms-client"); + ignore.add("com.github.jnr"); + ignore.add("stax:stax-api"); + ignore.add("net.openhft"); + ignore.add("org.easytesting"); + ignore.add("com.sun.xml.bind:jaxb-xjc"); + ignore.add("io.swagger:swagger-parser"); + ignore.add("io.fabric8:kubernetes-"); + ignore.add("org.apache.maven"); + ignore.add("org.codehaus.plexus"); + ignore.add("org.jboss.arquillian.container"); + ignore.add("org.apache.curator"); + ignore.add("org.apache.parquet"); + ignore.add("org.springframework.data"); + ignore.add("org.apache.velocity"); + + Map<String, Map<String, String>> status = new TreeMap<>(); + Set<String> mismatches = new TreeSet<>(); + for (MavenResolvedArtifact a : dependencyArtifacts) { + boolean ignoreCheck = false; + for (String i : ignore) { + if (getIdentifier(a).startsWith(i)) { + ignoreCheck = true; + break; + } + } + if (ignoreCheck) { + continue; + } + + String group = a.getCoordinate().getGroupId(); + String artifact = a.getCoordinate().getArtifactId(); + String version = a.getCoordinate().getVersion(); + + String artifactPrefix = artifact; + if (artifactPrefix.contains("-")) { + artifactPrefix = artifactPrefix.substring(0, artifactPrefix.indexOf("-")); + } + String prefixId = group + ":" + artifactPrefix; + + if (!status.containsKey(prefixId)) { + status.put(prefixId, new TreeMap<>()); + } + + for (String anotherVersion : status.get(prefixId).values()) { + if (!sameVersion(anotherVersion, version)) { + mismatches.add(prefixId); + } + } + + status.get(prefixId).put(getIdentifier(a), version); + } + + StringBuilder message = new StringBuilder(); + for (String mismatch : mismatches) { + message.append("Found mismatch for dependency " + mismatch + ":\n"); + for (String art : status.get(mismatch).keySet()) { + String ver = status.get(mismatch).get(art); + message.append(" - " + art + " --> " + ver + "\n"); + } + } + + if (message.length() > 0) { + String alert = "Library version mismatch found.\n" + message; + if (FAIL_ON_RELATED_LIBRARY_MISMATCH) { + throw new RuntimeException(alert); + } else { + debug(alert); + } + } + } + + private static boolean sameVersion(String v1, String v2) { + if (VERSION_EQUALITY_MINOR_VERSION) { + if (v1.indexOf(".") != v1.lastIndexOf(".") && v2.indexOf(".") != v2.lastIndexOf(".")) { + // truncate up to minor version + int v1MinSplit = v1.indexOf(".", v1.indexOf(".") + 1); + v1 = v1.substring(0, v1MinSplit); + + int v2MinSplit = v2.indexOf(".", v2.indexOf(".") + 1); + v2 = v2.substring(0, v2MinSplit); + } + } + + return v1.equals(v2); + } + + private static List<MavenResolvedArtifact> merge(ITestConfig config, List<MavenResolvedArtifact> runtimeDependencies, List<MavenResolvedArtifact> testDependencies) { + + + Set<String> runtimeArtifacts = new HashSet<>(); + for (MavenResolvedArtifact a : runtimeDependencies) { + runtimeArtifacts.add(getIdentifier(a)); + } + + Map<String, String> testVersions = new HashMap<>(); + for (MavenResolvedArtifact a : testDependencies) { + testVersions.put(getIdentifier(a), a.getCoordinate().getVersion()); + } + + List<MavenResolvedArtifact> result = new LinkedList<>(); + List<String> problems = new LinkedList<>(); + + for (MavenResolvedArtifact a : runtimeDependencies) { + String version = a.getCoordinate().getVersion(); + String testVersion = testVersions.get(getIdentifier(a)); + + if (testVersion != null && !sameVersion(testVersion, version)) { + problems.add("Versions for artifact " + getIdentifier(a) + " are different between runtime (" + version + ") and test (" + testVersion + ") scopes"); + } + + result.add(a); + } + + for (MavenResolvedArtifact a : testDependencies) { + if (!runtimeArtifacts.contains(getIdentifier(a))) { + result.add(a); + } + } + + if (!problems.isEmpty()) { + StringBuilder message = new StringBuilder(); + message.append("Some problems found while merging test dependencies:\n"); + for (String problem : problems) { + message.append(" - " + problem + "\n"); + } + + if (FAIL_ON_TEST_LIBRARY_MISMATCH) { + throw new RuntimeException(message.toString()); + } else { + debug(message.toString()); + } + } + + return result; + } + + private static String getIdentifier(MavenResolvedArtifact a) { + return a.getCoordinate().getGroupId() + ":" + a.getCoordinate().getArtifactId() + ":" + a.getCoordinate().getType() + ":" + a.getCoordinate().getClassifier(); + } + private static File createResolverPom(ITestConfig config, List<String> cleanTestProvidedDependencies) throws Exception { String pom; @@ -309,6 +462,8 @@ public final class ArquillianPackager { pom = pom.replace(property, resolvedProperties.get(property)); } + pom = pom.replace("#{module}", config.getModuleName()); + File pomFile = new File(config.getModuleBasePath() + "/target/itest-spring-boot-dependency-resolver-pom.xml"); try (FileWriter fw = new FileWriter(pomFile)) { IOUtils.write(pom, fw); @@ -317,20 +472,20 @@ public final class ArquillianPackager { return pomFile; } - private static File createUserPom(ITestConfig config, List<String> cleanTestProvidedDependencies) throws Exception { + private static File createUserPom(ITestConfig config) throws Exception { String pom; try (InputStream pomTemplate = ArquillianPackager.class.getResourceAsStream("/application-pom.xml")) { pom = IOUtils.toString(pomTemplate); } - StringBuilder dependencies = new StringBuilder(); - for (String dep : cleanTestProvidedDependencies) { - dependencies.append(dep); - dependencies.append("\n"); - } - - pom = pom.replace("<!-- DEPENDENCIES -->", dependencies.toString()); +// StringBuilder dependencies = new StringBuilder(); +// for (String dep : cleanTestProvidedDependencies) { +// dependencies.append(dep); +// dependencies.append("\n"); +// } +// +// pom = pom.replace("<!-- DEPENDENCIES -->", dependencies.toString()); Map<String, String> resolvedProperties = new TreeMap<>(); Pattern propPattern = Pattern.compile("(\\$\\{[^}]*\\})"); @@ -412,6 +567,23 @@ public final class ArquillianPackager { return dependencyXml; } + private static String switchToStarterIfPresent(ITestConfig config, String dependencyXml) { + + String groupId = textBetween(dependencyXml, "<groupId>", "</groupId>"); + String artifactId = textBetween(dependencyXml, "<artifactId>", "</artifactId>"); + String type = textBetween(dependencyXml, "<type>", "</type>"); + + if ("org.apache.camel".equals(groupId) && artifactId.startsWith("camel-") && !"test-jar".equals(type)) { + String starterArtifact = artifactId + "-starter"; + File starterFile = new File("../../components-starter/" + starterArtifact); + if (starterFile.exists()) { + dependencyXml = dependencyXml.replace(artifactId, starterArtifact); + } + } + + return dependencyXml; + } + private static String setResolvedVersion(ITestConfig config, String dependencyXml, Map<String, String> resolvedVersions) throws Exception { String groupId = textBetween(dependencyXml, "<groupId>", "</groupId>");
http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/DependencyResolver.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/DependencyResolver.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/DependencyResolver.java index e7ff4cd..fe54d80 100644 --- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/DependencyResolver.java +++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/DependencyResolver.java @@ -16,6 +16,8 @@ */ package org.apache.camel.itest.springboot.util; +import java.io.File; +import java.io.IOException; import java.io.StringWriter; import java.util.Collections; import java.util.HashSet; @@ -169,7 +171,7 @@ public final class DependencyResolver { } public static String resolveCamelParentBOMVersion(String groupId, String artifactId) throws Exception { - return xpath("../../parent/pom.xml", "/project/dependencyManagement/dependencies/dependency[groupId='" + groupId + "' and artifactId='" + artifactId + "']/version/text()"); + return xpath(camelRoot("parent/parent/pom.xml"), "/project/dependencyManagement/dependencies/dependency[groupId='" + groupId + "' and artifactId='" + artifactId + "']/version/text()"); } public static String resolveParentProperty(String property) { @@ -182,29 +184,29 @@ public final class DependencyResolver { } public static String resolveSpringBootParentProperty(String property) { - return resolveProperty("../../spring-boot-dm/camel-starter-parent/pom.xml", property, 0); + return resolveProperty(camelRoot("spring-boot-dm/pom.xml"), property, 0); } public static String resolveCamelParentProperty(String property) { - return resolveProperty("../../parent/pom.xml", property, 0); + return resolveProperty(camelRoot("parent/pom.xml"), property, 0); } private static String resolveSurefireProperty(String property) throws Exception { - property = getSurefirePropertyFromPom("pom.xml", property); + property = getSurefirePropertyFromPom(new File("pom.xml"), property); if (property != null && !isResolved(property)) { - property = resolveProperty("pom.xml", property, 0); + property = resolveProperty(new File("pom.xml"), property, 0); } if (property != null && !isResolved(property)) { - property = resolveProperty("../pom.xml", property, 0); + property = resolveProperty(new File("../pom.xml"), property, 0); } if (property != null && !isResolved(property)) { - property = resolveProperty("../../spring-boot-dm/camel-starter-parent/pom.xml", property, 0); + property = resolveProperty(camelRoot("spring-boot-dm/pom.xml"), property, 0); } return property; } - private static String resolveProperty(String pom, String property, int depth) { + private static String resolveProperty(File pom, String property, int depth) { try { property = property.trim(); if (!property.startsWith("${") || !property.endsWith("}")) { @@ -232,19 +234,19 @@ public final class DependencyResolver { } } - private static String getSurefirePropertyFromPom(String pom, String property) throws Exception { + private static String getSurefirePropertyFromPom(File pom, String property) throws Exception { return xpath(pom, "//plugin[artifactId='maven-surefire-plugin']//systemProperties/property[name='" + property + "']/value/text()"); } - private static String getPropertyFromPom(String pom, String property) throws Exception { + private static String getPropertyFromPom(File pom, String property) throws Exception { return xpath(pom, "/project/properties/" + property + "/text()"); } - private static String getParentVersion(String pom) throws Exception { + private static String getParentVersion(File pom) throws Exception { return xpath(pom, "/project/parent/version/text()"); } - private static String xpath(String pom, String expression) throws Exception { + private static String xpath(File pom, String expression) throws Exception { DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(pom); XPath xpath = xPathfactory.newXPath(); @@ -260,4 +262,28 @@ public final class DependencyResolver { return value != null && !value.startsWith("$"); } + private static File camelRoot(String path) { + return new File(camelRoot(), path); + } + + private static File camelRoot() { + try { + File root = new File(".").getCanonicalFile(); + while (root != null) { + File[] names = root.listFiles(pathname -> pathname.getName().equals("components-starter")); + if (names != null && names.length == 1) { + break; + } + root = root.getParentFile(); + } + + if (root == null) { + throw new IllegalStateException("Cannot find Apache Camel project root directory"); + } + return root; + } catch (IOException e) { + throw new IllegalStateException("Error while getting directory", e); + } + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java index 16bcc90..84dde29 100644 --- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java +++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/JarExporter.java @@ -32,7 +32,7 @@ public class JarExporter { public void exportJar() throws Exception { Archive<?> archive = ArquillianPackager.springBootPackage(new ITestConfigBuilder() - .module("camel-hbase") + .module("camel-ahc") .build()); new ZipExporterImpl(archive).exportTo(new File("target/export.zip"), true); http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml b/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml index 8e0b3c2..1e86bc2 100644 --- a/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml +++ b/tests/camel-itest-spring-boot/src/test/resources/application-pom.xml @@ -25,13 +25,13 @@ <version>1.0</version> <name>Spring-Boot Application</name> - <description>This is a the base pom of spring-boot applications launched by the users</description> + <description>This a the base pom of spring-boot applications launched by the users</description> <dependencyManagement> <dependencies> <dependency> - <!-- Then use camel dependency management --> + <!-- Only the BOM --> <groupId>org.apache.camel</groupId> <artifactId>camel-spring-boot-bom</artifactId> <version>${project.version}</version> http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml ---------------------------------------------------------------------- diff --git a/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml b/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml index f0e60e2..4e04e0b 100644 --- a/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml +++ b/tests/camel-itest-spring-boot/src/test/resources/dependency-resolver-pom.xml @@ -22,7 +22,7 @@ <groupId>com.company</groupId> <artifactId>spring-boot-dependency-resolver</artifactId> - <version>1.0</version> + <version>${project.version}</version> <name>Spring-Boot Dependency Resolver</name> <description>This POM is used to resolve test and provided dependencies required in integration tests</description> @@ -31,7 +31,15 @@ <dependencies> <dependency> - <!-- Then use camel dependency management --> + <!-- BOM first --> + <groupId>org.apache.camel</groupId> + <artifactId>camel-spring-boot-bom</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + + <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-starter-parent</artifactId> <version>${project.version}</version> @@ -40,7 +48,7 @@ </dependency> <dependency> - <!-- Added as fallback for test and optional dependencies --> + <!-- Added as fallback for test and provided dependencies --> <groupId>org.apache.camel</groupId> <artifactId>camel-parent</artifactId> <version>${project.version}</version> @@ -53,6 +61,13 @@ <dependencies> + <!-- Adding the starter as provided dependency --> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>#{module}-starter</artifactId> + <scope>provided</scope> + </dependency> + <!-- DEPENDENCIES --> </dependencies> http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootStarterMojo.java ---------------------------------------------------------------------- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootStarterMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootStarterMojo.java index e154bb9..3cc0ce8 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootStarterMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootStarterMojo.java @@ -457,7 +457,7 @@ public class SpringBootStarterMojo extends AbstractMojo { } } - if (IGNORE_TEST_MODULES && project.getArtifactId().startsWith("camel-test-")) { + if (IGNORE_TEST_MODULES && (project.getArtifactId().startsWith("camel-test") || project.getArtifactId().startsWith("camel-testng"))) { getLog().debug("Test components are ignored"); return false; } http://git-wip-us.apache.org/repos/asf/camel/blob/9de5089a/tooling/maven/camel-package-maven-plugin/src/main/resources/spring-boot-fix-dependencies.properties ---------------------------------------------------------------------- diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/spring-boot-fix-dependencies.properties b/tooling/maven/camel-package-maven-plugin/src/main/resources/spring-boot-fix-dependencies.properties index 1fac224..48542a9 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/resources/spring-boot-fix-dependencies.properties +++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/spring-boot-fix-dependencies.properties @@ -27,6 +27,9 @@ global=org.apache.camel:camel-core-starter,org.apache.camel:camel-spring-boot-st # Cassandra (and others) fail without this dependency camel-core=com.github.ben-manes.caffeine:caffeine +camel-ahc=io.netty:netty-all:${ahc-netty-version} +camel-ahc-ws=io.netty:netty-all:${ahc-netty-version} + camel-github=org.eclipse.mylyn.github:org.eclipse.egit.github.core:${egit-github-core-version} camel-guava-eventbus=com.google.guava:guava:${google-guava-version} @@ -47,6 +50,10 @@ camel-spark-rest=org.hibernate:hibernate-validator camel-spring-boot=org.apache.camel:camel-core-starter camel-spring-ws=org.springframework.boot:spring-boot-starter-web:${spring-boot-version} camel-restlet=org.hibernate:hibernate-validator + +# Force the spring-boot version of jetty +camel-salesforce=org.eclipse.jetty:jetty-client,org.eclipse.jetty:jetty-util,org.eclipse.jetty:jetty-util-ajax,org.eclipse.jetty:jetty-io + camel-swagger-java=org.hibernate:hibernate-validator camel-undertow=org.hibernate:hibernate-validator
