/*
* Copyright 2011 the original author or authors.
*
* Licensed 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.
*/
package org.gradle.api.artifacts.repositories;
import java.io.File;
import java.util.Set;
/**
* A repository that looks into a number of directories for artifacts. The artifacts are expected to be located in the root of the specified directories.
* The repository ignores any group/organization information specified in the dependency section of your build script. If you only use this kind of
* resolver you can specify your dependencies like <code>:junit:4.8.1</code> instead of <code>junit:junit:4.8.1</code>.
*
* <p>To resolve a dependency, this resolver looks for one of the following files. It will return the first match it finds:
*
* <ul>
*
* <li>[artifact]-[version].[ext]
* <li>[artifact]-[version]-[classifier].[ext]
* <li>[artifact].[ext]
* <li>[artifact]-[classifier].[ext]
*
* </ul>
*
* So, for example, to resolve <code>:junit:junit:4.8.1</code>, this repository will look for <code>junit-4.8.1.jar</code> and then <code>junit.jar</code>.
*/
public interface FlatDirectoryArtifactRepository extends ArtifactRepository {
/**
* Returns the directories where this repository will look for artifacts.
*
* @return The directories. Never null.
*/
Set<File> getDirs();
/**
* Adds a directory where this repository will look for artifacts.
*
* <p>The provided value are evaluated as per {@link org.gradle.api.Project#file(Object)}.
*
* @param dir the directory
*/
void dir(Object dir);
/**
* Adds some directories where this repository will look for artifacts.
*
* <p>The provided values are evaluated as per {@link org.gradle.api.Project#files(Object...)}.
*
* @param dirs the directories.
*/
void dirs(Object... dirs);
/**
* Sets the directories where this repository will look for artifacts.
*
* @param dirs the directories.
* @since 4.0
*/
void setDirs(Set<File> dirs);
/**
* Sets the directories where this repository will look for artifacts.
*
* <p>The provided values are evaluated as per {@link org.gradle.api.Project#files(Object...)}.
*
* @param dirs the directories.
*/
void setDirs(Iterable<?> dirs);
}