<?xml version="1.0" encoding="UTF-8"?>
<!--
  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>
  <property name="apache.repo.release.url" value="https://repository.apache.org/service/local/staging/deploy/maven2" override="false" />  
  <property name="apache.repo.snapshot.url" value="https://repository.apache.org/content/repositories/snapshots/" override="false" />  
  <credentials host="repository.apache.org" realm="Sonatype Nexus Repository Manager" username="${upload.user}" passwd="${upload.password}"/>
  <!--<property name="maven2.pattern" value="[organisation]/[module]/[revision]/[module]-[revision](-[classifier])" />-->
  <property name="maven2.pattern" value="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])" />
  <property name="maven2.pattern.ext" value="${maven2.pattern}.[ext]" />
  <!-- 
  <property name="pgp.keyId" value="auto" override="false"/> 
  <signers>
  	<pgp name="apache-sig" secring="${user.home}/AppData/Roaming/gnupg/secring.gpg" password="${pgp.password}" keyId="${pgp.keyId}"/>
  </signers>
   -->
  <settings defaultResolver="wookie-chain" />
  <caches>
  	<cache useOrigin="false" name="null"/>
  </caches>
  <resolvers>
	  <filesystem name="local" m2compatible="true" local="true" cache="null">
		  <artifact pattern="${user.home}/.m2/repository/${maven2.pattern.ext}" />
	  </filesystem>
	  <chain name="wookie-chain">
		<resolver ref="local"></resolver>
		<filesystem name="wookie-local">
			<artifact pattern="${basedir}/${ivy.repository.dir}/lib/[artifact]-[revision].[type]" />
		</filesystem>
		<ibiblio name="public" m2compatible="true" />
		<!-- According to the ivy docs only a url resolver can publish, however the ibiblio resolver (below) appears to work.
		<url name="apache-snapshot" m2compatible="true">
			<artifact pattern="${apache.repo.snapshot.url}/${maven2.pattern.ext}"/>
		</url>
		-->
		<ibiblio usepoms="true" name="apache-snapshot-artifacts" root="${apache.repo.snapshot.url}" pattern="${maven2.pattern.ext}" m2compatible="true" />
		<ibiblio name="apache-release-artifacts" root="${apache.repo.release.url}" pattern="${maven2.pattern.ext}" m2compatible="true" />
	  </chain>
  </resolvers>
</ivysettings>


