[BROOKLYN-185] Inline swagger-core and swagger-jaxrs into brooklyn-utils-rest-swagger
swagger-core and swagger-jaxrs versions 1.5.3 have package io.swagger.config, which leads to a split-package situation. The selected workaround is to inline both these dependencies into brooklyn-utils-rest-swagger and re-export them for higher level client code. When brooklyn moves to guava-18.0 we can migrate to swagger 1.5.4, which are properly bundled. Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/c61f719a Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/c61f719a Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/c61f719a Branch: refs/heads/master Commit: c61f719a50d10908e2c2dd4a3b4539173d540ae6 Parents: c718ff3 Author: Ciprian Ciubotariu <[email protected]> Authored: Wed Nov 18 17:51:29 2015 +0200 Committer: Ciprian Ciubotariu <[email protected]> Committed: Wed Nov 18 17:51:29 2015 +0200 ---------------------------------------------------------------------- karaf/features/src/main/feature/feature.xml | 12 ++-- .../features/src/main/history/dependencies.xml | 4 +- utils/rest-swagger/pom.xml | 64 +++++++++++++++++++- 3 files changed, 69 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c61f719a/karaf/features/src/main/feature/feature.xml ---------------------------------------------------------------------- diff --git a/karaf/features/src/main/feature/feature.xml b/karaf/features/src/main/feature/feature.xml index 46f7a0e..384bc7d 100644 --- a/karaf/features/src/main/feature/feature.xml +++ b/karaf/features/src/main/feature/feature.xml @@ -27,10 +27,11 @@ <!--<bundle dependency="true">mvn:javax.ws.rs/jsr311-api/${jsr311-api.version}</bundle>--> <!--<bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/${javax.ws.rs-api}</bundle>--> - <feature name="swagger" version="${swagger.version}" description="Swagger Annotations+Core+JAXRS+Models"> + <!-- temporary feature until we migrate to swagger-1.5.4, which is properly bundled --> + <feature name="swagger-crippled" version="${swagger.version}" description="Swagger Annotations+Core+JAXRS+Models"> <bundle>mvn:io.swagger/swagger-annotations/${swagger.version}</bundle> - <bundle>wrap:mvn:io.swagger/swagger-core/${swagger.version}</bundle> - <bundle>wrap:mvn:io.swagger/swagger-jaxrs/${swagger.version}</bundle> +<!-- <bundle>wrap:mvn:io.swagger/swagger-core/${swagger.version}</bundle> + <bundle>wrap:mvn:io.swagger/swagger-jaxrs/${swagger.version}</bundle>--> <bundle>mvn:io.swagger/swagger-models/${swagger.version}</bundle> <!--<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javassist/${javassist.bundle.version}</bundle>--> @@ -41,9 +42,6 @@ <bundle dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle> <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${fasterxml.jackson.version}</bundle> <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${fasterxml.jackson.version}</bundle> - <!--<bundle>mvn:com.thoughtworks.paranamer/paranamer/${thoughtworks.paranamer.version}</bundle>--> - <!--<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.json4s/${json4s.bundle.version}</bundle>--> - <!--<bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/${reflections.bundle.version}</bundle>--> </feature> <feature name="brooklyn-utils-common" version="${project.version}" description="Brooklyn Common Utils"> @@ -70,7 +68,7 @@ <feature name="brooklyn-utils-rest-swagger" version="${project.version}" description="Brooklyn REST Swagger Apidoc Utilities"> <feature>brooklyn-utils-common</feature> - <feature version="${swagger.version}">swagger</feature> + <feature version="${swagger.version}">swagger-crippled</feature> <bundle>mvn:org.apache.brooklyn/brooklyn-utils-rest-swagger/${project.version}</bundle> http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c61f719a/karaf/features/src/main/history/dependencies.xml ---------------------------------------------------------------------- diff --git a/karaf/features/src/main/history/dependencies.xml b/karaf/features/src/main/history/dependencies.xml index 1417ea8..98add88 100644 --- a/karaf/features/src/main/history/dependencies.xml +++ b/karaf/features/src/main/history/dependencies.xml @@ -17,7 +17,7 @@ <feature prerequisite="false" dependency="false">brooklyn-utils-rest-swagger</feature> <feature prerequisite="false" dependency="false">brooklyn-utils-rest-swagger</feature> <feature prerequisite="false" dependency="false">jetty</feature> - <feature prerequisite="false" dependency="false">swagger</feature> + <feature prerequisite="false" dependency="false">swagger-crippled</feature> <feature prerequisite="false" dependency="false">war</feature> <feature prerequisite="false" dependency="false">war</feature> <bundle>mvn:ch.qos.logback/logback-classic/1.0.7</bundle> @@ -96,8 +96,6 @@ <bundle>mvn:org.yaml/snakeyaml/1.11</bundle> <bundle>wrap:mvn:com.google.http-client/google-http-client/1.18.0-rc</bundle> <bundle>wrap:mvn:com.maxmind.geoip2/geoip2/0.8.1</bundle> - <bundle>wrap:mvn:io.swagger/swagger-core/1.5.3</bundle> - <bundle>wrap:mvn:io.swagger/swagger-jaxrs/1.5.3</bundle> <bundle>wrap:mvn:javax.validation/validation-api/1.0.0.GA</bundle> <bundle>wrap:mvn:org.tukaani/xz/1.4</bundle> <bundle>wrap:mvn:xpp3/xpp3_min/1.1.4c</bundle> http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c61f719a/utils/rest-swagger/pom.xml ---------------------------------------------------------------------- diff --git a/utils/rest-swagger/pom.xml b/utils/rest-swagger/pom.xml index 61e5fa4..6f9a86f 100644 --- a/utils/rest-swagger/pom.xml +++ b/utils/rest-swagger/pom.xml @@ -19,7 +19,7 @@ --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - <packaging>jar</packaging> + <packaging>bundle</packaging> <artifactId>brooklyn-utils-rest-swagger</artifactId> <name>Brooklyn REST Swagger Apidoc Utilities</name> @@ -90,5 +90,67 @@ </dependency> </dependencies> + + <build> + <plugins> + <!-- <plugin> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <artifactSet> + <includes> + <include>io.swagger:swagger-core</include> + <include>io.swagger:swagger-jaxrs</include> + </includes> + </artifactSet> + <finalName>${project.artifactId}-${project.version}-with-swagger</finalName> + <outputFile>${project.build.directory}/${project.artifactId}-shaded-${project.version}.jar</outputFile> + </configuration> + </execution> + </executions> + </plugin>--> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <supportedProjectTypes> + <supportedProjectType>jar</supportedProjectType> + <supportedProjectType>bundle</supportedProjectType> + </supportedProjectTypes> + <excludeDependencies>brooklyn-util-common,brooklyn-logback-includes</excludeDependencies> + <instructions> + <!-- + This tells maven-bundle-plugin to include and export swagger-core and swagger-jaxrs into this bundle, + but to not include other dependencies that are properly bundled themselves. + We also need the swagger packages exported, since we're going to use them in higher-level bundles. + + The only way I could convince maven-bundle-plugin to do all this was to manually specify the packages + in swagger-core and swagger-jaxrs versions 1.5.3 + + FIXME: move to >=swagger-1.5.4 (which does not suffer from split packages and is a proper bundle), + but those depend on guava-18.0 instead of brooklyn's currently used guava-17.x + --> + <Export-Package> + org.apache.brooklyn.rest.*, + io.swagger.config.*, + io.swagger.converter.*, + io.swagger.core.filter.*, + io.swagger.jackson.*, + io.swagger.model.*, + io.swagger.util.*, + io.swagger.jaxrs.*, + !* + </Export-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project>
