## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------

#Apache ServiceMix specs
org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.1/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.0/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.1/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.0/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.stax-api-1.0/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.javamail-api-1.4/${servicemix-specs-version}/jar
org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/${servicemix-specs-version}/jar

#Apache ServiceMix bundles
org.apache.servicemix.bundles/org.apache.servicemix.bundles.abdera/${abdera-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${antlr-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.asm/${asm-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons-beanutils-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-io/${commons-io-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.orbitz-consul-client/${consul-client-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/${dom4j-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.flatpack/${flatpack-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.fop/${fop-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.freemarker/${freemarker-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.hamcrest/${hamcrest-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.hapi/${hapi-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.hystrix/${hystrix-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.irclib/${irclib-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.isorelax/${isorelax-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jcr-api/${jcr-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-cache-api/${jcache-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jettison/${jettison-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.cometd-java-server/${cometd-java-server-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.joda-time/${jodatime-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.josql/${josql-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.juel/${juel-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.junit/${junit-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene/${lucene-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene-analyzers-common/${lucene-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene-queryparser/${lucene-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene-queries/${lucene-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene-sandbox/${lucene-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.ognl/${ognl-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.httpcore/${httpcore-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.jing/${jing-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${saxon-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.snmp4j/${snmp4j-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.spymemcached/${spymemcached-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.stringtemplate/${stringtemplate-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.tagsoup/${tagsoup-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.werken-xpath/${werken-xpath-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/${wsdl4j-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/${xalan-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan-serializer/${xalan-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/${xerces-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/${xmlsec-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/${xpp3-bundle-version}/jar
org.apache.servicemix.bundles/org.apache.servicemix.bundles.xstream/${xstream-bundle-version}/jar

#Apache CXF bundle
org.apache.cxf/cxf-bundle/${cxf-version}/jar
