<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!--

        Licensed to the Apache Software Foundation (ASF) under one or more
        contributor license agreements.  See the NOTICE file distributed with
        this work for additional information regarding copyright ownership.
        The ASF licenses this file to You under the Apache License, Version 2.0
        (the "License"); you may not use this file except in compliance with
        the License.  You may obtain a copy of the License at

           http://www.apache.org/licenses/LICENSE-2.0

        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License.
    -->

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>bundles-pom</artifactId>
        <version>14</version>
        <relativePath>../bundles-pom/pom.xml</relativePath>
    </parent>

    <groupId>org.apache.servicemix.bundles</groupId>
    <artifactId>org.apache.servicemix.bundles.hapi-fhir-structures-hl7org-dstu2</artifactId>
    <version>5.7.0_1</version>
    <packaging>bundle</packaging>
    <name>Apache ServiceMix :: Bundles :: ${pkgArtifactId}</name>
    <description>This OSGi bundle wraps ${pkgArtifactId} ${pkgVersion} jar file.</description>

    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/servicemix-bundles.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/servicemix-bundles.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=servicemix-bundles.git</url>
    <tag>org.apache.servicemix.bundles.hapi-fhir-structures-hl7org-dstu2-5.7.0_1</tag>
  </scm>

    <properties>
        <pkgGroupId>ca.uhn.hapi.fhir</pkgGroupId>
        <pkgArtifactId>hapi-fhir-structures-hl7org-dstu2</pkgArtifactId>
        <pkgVersion>5.7.0</pkgVersion>
        <servicemix.osgi.import.pkg>
        javax.servlet;resolution:=optional,
	javax.servlet.http;resolution:=optional,
	ca.uhn.fhir.context;version="[5,6)",
	ca.uhn.fhir.context.api;version="[5,6)",
	ca.uhn.fhir.context.support;version="[5,6)",
	ca.uhn.fhir.fluentpath;version="[5,6)",
	ca.uhn.fhir.model.api;version="[5,6)",
	ca.uhn.fhir.model.api.annotation;version="[5,6)",
	ca.uhn.fhir.model.base.composite;version="[5,6)",
	ca.uhn.fhir.model.valueset;version="[5,6)",
	ca.uhn.fhir.parser;version="[5,6)",
	ca.uhn.fhir.rest.annotation;version="[5,6)",
	ca.uhn.fhir.rest.api;version="[5,6)",
	ca.uhn.fhir.rest.api.server;version="[5,6)",
	ca.uhn.fhir.rest.server;resolution:=optional,
	ca.uhn.fhir.rest.server.exceptions;version="[5,6)",
	ca.uhn.fhir.rest.server.method;resolution:=optional,
	ca.uhn.fhir.rest.server.servlet;resolution:=optional,
	ca.uhn.fhir.util;version="[5,6)",
	com.google.gson;version="[2.8,3)",
	javax.sound.sampled,
	javax.xml.parsers,
	javax.xml.transform,
	javax.xml.transform.stream,
	net.sf.saxon,
	org.apache.commons.codec.binary;version="[1.11,2)",
	org.apache.commons.io;version="[1.4,2)",
	org.apache.commons.lang3;version="[3.8,4)",
	org.apache.commons.lang3.builder;version="[3.8,4)",
	org.apache.commons.lang3.time;version="[3.8,4)",
	org.hl7.fhir.exceptions;version="[5,6)",
	org.hl7.fhir.instance.model.api;version="[5,6)",
	org.hl7.fhir.utilities;version="[5,6)",
	org.hl7.fhir.utilities.ucum;version="[5,6)",
	org.hl7.fhir.utilities.validation;version="[5,6)",
	org.hl7.fhir.utilities.xhtml;version="[5,6)",
	org.hl7.fhir.utilities.xml;version="[5,6)",
	org.w3c.dom,
	org.w3c.dom.ls
        </servicemix.osgi.import.pkg>
        <servicemix.osgi.export.pkg>
        org.hl7.fhir.instance.terminologies;uses:="org.hl7.fhir.exceptions,org.hl7.fhir.instance.model,org.hl7.fhir.instance.utils";version=5.7.0,
	org.hl7.fhir.instance.formats;uses:=org.hl7.fhir.instance.model;version=5.7.0,
	org.hl7.fhir.instance.utils;
		uses:="com.google.gson,
			org.hl7.fhir.exceptions,
			org.hl7.fhir.instance.client,
			org.hl7.fhir.instance.formats,
			org.hl7.fhir.instance.model,
			org.hl7.fhir.instance.terminologies,
			org.hl7.fhir.utilities.validation,
			org.w3c.dom";
		version=5.7.0,
	org.hl7.fhir.instance.utilities;uses:=javax.xml.transform;version=5.7.0,
	org.hl7.fhir.instance.utilities.xml;uses:="org.hl7.fhir.instance.utilities,org.w3c.dom";version=5.7.0,
	org.hl7.fhir.instance.model;
		uses:="ca.uhn.fhir.context,
			ca.uhn.fhir.model.api.annotation,
			org.hl7.fhir.exceptions,
			org.hl7.fhir.instance.model.api,
			org.hl7.fhir.instance.utils,
			org.hl7.fhir.utilities.xhtml";
		version=5.7.0,
	org.hl7.fhir.instance.model.valuesets;uses:=org.hl7.fhir.instance.model;version=5.7.0,
	org.hl7.fhir.instance;
		uses:="ca.uhn.fhir.context,
			ca.uhn.fhir.context.support,
			ca.uhn.fhir.fluentpath,
			ca.uhn.fhir.model.api,
			ca.uhn.fhir.model.base.composite,
			ca.uhn.fhir.rest.api,
			ca.uhn.fhir.rest.api.server,
			ca.uhn.fhir.rest.server,
			org.hl7.fhir.instance.conf,
			org.hl7.fhir.instance.model,
			org.hl7.fhir.instance.model.api";
		version=5.7.0,
	org.hl7.fhir.instance.conf;
		uses:="ca.uhn.fhir.rest.annotation,
			ca.uhn.fhir.rest.server,
			ca.uhn.fhir.rest.server.servlet,
			javax.servlet.http,
			org.hl7.fhir.instance.model,
			org.hl7.fhir.instance.model.api";
		version=5.7.0,
	org.hl7.fhir.instance.client;uses:=org.hl7.fhir.instance.model;version=5.7.0,
	ca.uhn.fhir.rest.server.provider.dstu2hl7org;
		uses:="ca.uhn.fhir.context,
			ca.uhn.fhir.context.api,
			ca.uhn.fhir.model.api,
			ca.uhn.fhir.model.valueset,
			ca.uhn.fhir.rest.api,
			org.hl7.fhir.instance.model.api";
		version=5.7.0
        </servicemix.osgi.export.pkg>
        <servicemix.osgi.fragment.host>
            ca.uhn.hapi.fhir.hapi-fhir-base
        </servicemix.osgi.fragment.host>
    </properties>

    <dependencies>
        <dependency>
            <groupId>${pkgGroupId}</groupId>
            <artifactId>${pkgArtifactId}</artifactId>
            <version>${pkgVersion}</version>
            <optional>true</optional>
        </dependency>

        <!-- sources -->
        <dependency>
            <groupId>${pkgGroupId}</groupId>
            <artifactId>${pkgArtifactId}</artifactId>
            <version>${pkgVersion}</version>
            <classifier>sources</classifier>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                    <include>${pkgGroupId}:${pkgArtifactId}</include>
                                </includes>
                            </artifactSet>
                            <filters>
                                <filter>
                                    <artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
                                    <excludes>
                                        <exclude>**</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
                            <createDependencyReducedPom>true</createDependencyReducedPom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
