From 090546986693da11225020c02bcd8633fb9e74d6 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 14 Jun 2017 14:30:56 +0200 Subject: [PATCH] Shades aether (#326) That way we do not interfere with whatever Maven brings on its classpath without this change deployment might fail due to being unauthorized. with this change we're shading aether and maven in stub runner. Due to this there is no classpath clash any more fixes #325 --- .gitignore | 3 +- pom.xml | 1 + spring-cloud-contract-dependencies/pom.xml | 5 + spring-cloud-contract-shade/pom.xml | 147 ++++++++++++++++++ .../pom.xml | 5 + spring-cloud-contract-stub-runner/pom.xml | 37 ++--- .../contract/stubrunner/AetherFactories.java | 29 ++-- .../build.gradle | 2 + .../gradle.properties | 3 +- .../pom.xml | 31 +++- 10 files changed, 218 insertions(+), 45 deletions(-) create mode 100644 spring-cloud-contract-shade/pom.xml diff --git a/.gitignore b/.gitignore index 73bc80d6c4..e92ba1f3f9 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ hs_err_pid* .DS_Store *.log interpolated-settings.xml -interpolated-pom.xml \ No newline at end of file +interpolated-pom.xml +dependency-reduced-pom.xml \ No newline at end of file diff --git a/pom.xml b/pom.xml index fe09b9eee3..45bcdb70f1 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,7 @@ spring-cloud-contract-dependencies docs + spring-cloud-contract-shade spring-cloud-contract-wiremock spring-cloud-contract-verifier spring-cloud-contract-spec diff --git a/spring-cloud-contract-dependencies/pom.xml b/spring-cloud-contract-dependencies/pom.xml index 69669f4082..ff928bb11f 100644 --- a/spring-cloud-contract-dependencies/pom.xml +++ b/spring-cloud-contract-dependencies/pom.xml @@ -50,6 +50,11 @@ spring-cloud-contract-stub-runner ${project.version} + + org.springframework.cloud + spring-cloud-contract-shade + ${project.version} + org.springframework.cloud spring-cloud-starter-contract-verifier diff --git a/spring-cloud-contract-shade/pom.xml b/spring-cloud-contract-shade/pom.xml new file mode 100644 index 0000000000..8f8b0f0715 --- /dev/null +++ b/spring-cloud-contract-shade/pom.xml @@ -0,0 +1,147 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-contract-parent + 1.1.2.BUILD-SNAPSHOT + .. + + spring-cloud-contract-shade + jar + Spring Cloud Contract Shaded Dependencies + Spring Cloud Contract Shaded Dependencies + + + org.eclipse.aether + aether-api + true + + + org.eclipse.aether + aether-impl + true + + + org.eclipse.aether + aether-transport-file + true + + + org.eclipse.aether + aether-transport-http + true + + + org.eclipse.aether + aether-connector-basic + true + + + org.apache.maven + maven-aether-provider + true + + + org.apache.maven + maven-settings-builder + true + + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.4.3 + + + package + + shade + + + false + false + true + true + + + org.eclipse.aether.connector + shaded.org.eclipse.aether.connector + + + org.eclipse.aether.transport + shaded.org.eclipse.aether.transport + + + org.eclipse.aether.impl + shaded.org.eclipse.aether.impl + + + org.eclipse.aether.internal + shaded.org.eclipse.aether.internal + + + org.eclipse.aether.spi + shaded.org.eclipse.aether.spi + + + org.apache.maven + shaded.org.apache.maven + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.0 + + + unpack-dependencies + package + + unpack + + + + + org.springframework.cloud + spring-cloud-contract-shade + ${project.version} + sources + jar + false + ${project.build.directory}/sources + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.12 + + + add-source + package + + add-source + + + + ${project.build.directory}/sources + + + + + + + + diff --git a/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml b/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml index e01718dcd2..a24c4836a0 100644 --- a/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml +++ b/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml @@ -33,6 +33,11 @@ org.springframework.cloud spring-cloud-contract-wiremock + + + org.eclipse.aether + aether-api + diff --git a/spring-cloud-contract-stub-runner/pom.xml b/spring-cloud-contract-stub-runner/pom.xml index 8c5de8700b..834ba7e100 100644 --- a/spring-cloud-contract-stub-runner/pom.xml +++ b/spring-cloud-contract-stub-runner/pom.xml @@ -17,6 +17,10 @@ org.springframework.cloud spring-cloud-contract-verifier + + org.springframework.cloud + spring-cloud-contract-shade + org.springframework.cloud spring-cloud-stream-test-support @@ -46,6 +50,11 @@ spring-boot-configuration-processor true + + org.eclipse.aether + aether-api + true + net.sf.jopt-simple jopt-simple @@ -66,34 +75,6 @@ spring-integration-java-dsl true - - org.eclipse.aether - aether-api - - - org.eclipse.aether - aether-impl - - - org.eclipse.aether - aether-transport-file - - - org.eclipse.aether - aether-transport-http - - - org.eclipse.aether - aether-connector-basic - - - org.apache.maven - maven-aether-provider - - - org.apache.maven - maven-settings-builder - junit junit diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/AetherFactories.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/AetherFactories.java index 086f9bb288..edc538e61a 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/AetherFactories.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/AetherFactories.java @@ -16,27 +16,28 @@ package org.springframework.cloud.contract.stubrunner; +import shaded.org.apache.maven.repository.internal.MavenRepositorySystemUtils; +import shaded.org.apache.maven.settings.Settings; +import shaded.org.apache.maven.settings.building.DefaultSettingsBuilderFactory; +import shaded.org.apache.maven.settings.building.DefaultSettingsBuildingRequest; +import shaded.org.apache.maven.settings.building.SettingsBuilder; +import shaded.org.apache.maven.settings.building.SettingsBuildingException; +import shaded.org.apache.maven.settings.building.SettingsBuildingRequest; +import shaded.org.apache.maven.settings.building.SettingsBuildingResult; +import shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; +import shaded.org.eclipse.aether.impl.DefaultServiceLocator; +import shaded.org.eclipse.aether.spi.connector.RepositoryConnectorFactory; +import shaded.org.eclipse.aether.spi.connector.transport.TransporterFactory; +import shaded.org.eclipse.aether.transport.file.FileTransporterFactory; +import shaded.org.eclipse.aether.transport.http.HttpTransporterFactory; + import java.io.File; -import org.apache.maven.repository.internal.MavenRepositorySystemUtils; -import org.apache.maven.settings.Settings; -import org.apache.maven.settings.building.DefaultSettingsBuilderFactory; -import org.apache.maven.settings.building.DefaultSettingsBuildingRequest; -import org.apache.maven.settings.building.SettingsBuilder; -import org.apache.maven.settings.building.SettingsBuildingException; -import org.apache.maven.settings.building.SettingsBuildingRequest; -import org.apache.maven.settings.building.SettingsBuildingResult; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; -import org.eclipse.aether.impl.DefaultServiceLocator; import org.eclipse.aether.repository.LocalRepository; import org.eclipse.aether.repository.RepositoryPolicy; -import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; -import org.eclipse.aether.spi.connector.transport.TransporterFactory; -import org.eclipse.aether.transport.file.FileTransporterFactory; -import org.eclipse.aether.transport.http.HttpTransporterFactory; class AetherFactories { diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle index 91b5ea51ff..5674941167 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle @@ -59,6 +59,8 @@ configurations { dependencies { compile gradleApi() compile localGroovy() + compile "org.eclipse.aether:aether-api:${aetherVersion}" + compile("org.springframework.cloud:spring-cloud-contract-converters:${project.version}") { exclude(group: 'org.codehaus.groovy') } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle.properties index 22d63db1d0..b7db6bcd34 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle.properties +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle.properties @@ -17,4 +17,5 @@ nexusUsername = nexusPassword = verifierVersion=1.1.2.BUILD-SNAPSHOT -org.gradle.daemon=false \ No newline at end of file +org.gradle.daemon=false +aetherVersion=1.0.2.v20150114 \ No newline at end of file diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/pom.xml index b7475815cc..defb32fa49 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/pom.xml +++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/pom.xml @@ -28,7 +28,6 @@ UTF-8 UTF-8 false - 1.0.2.v20150114 1.7 1.7 @@ -277,6 +276,36 @@ aether-api provided + + org.eclipse.aether + aether-impl + provided + + + org.eclipse.aether + aether-transport-file + provided + + + org.eclipse.aether + aether-transport-http + provided + + + org.eclipse.aether + aether-connector-basic + provided + + + org.apache.maven + maven-aether-provider + provided + + + org.apache.maven + maven-settings-builder + provided + org.apache.maven.shared