<?xml version="1.0">
<!--
  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.
-->
<ivysettings>
  <properties file="${ivy.settings.dir}/ivysettings.properties"/>
  <settings defaultResolver="sigil-libs"/>

  <!--<caches defaultCacheDir="${ivy.settings.dir}/ivy-cache" />
  -->
  <caches default="mycache" checkUpToDate="false">
    <cache name="mycache" basedir="${ivy.settings.dir}/ivy-cache" useOrigin="true"/>
  </caches>

  <classpath file="${ivy.settings.dir}/../../../target/sigil-ivy-plugin.jar" />
  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
  <typedef name="sigil" classname="org.apache.felix.sigil.ivy.SigilResolver" />

  <parsers>
    <sigil-parser/>
  </parsers>

  <resolvers>
    <sigil name="sigil-libs" config="${ivy.settings.dir}/sigil-repos.properties" />
    <filesystem name="projects">
      <ivy pattern="${repository.dir}/[module]-[revision].xml" />
      <artifact pattern="${repository.dir}/[artifact]-[revision].[ext]" />
    </filesystem>
</resolvers>
<modules>
  <module organisation="org.apache" name="dependee" resolver="projects"/>
</modules>
</ivysettings>
