in src/main/java/org/apache/easyant/tasks/ConfigureBuildScopedRepository.java [49:109]
public void doExecute() throws BuildException {
String targetDirectory = getTarget();
// be sure that we have an absolute path
File targetDir = new File(targetDirectory);
targetDirectory = targetDir.getAbsolutePath();
String buildScopeRepositoryName = getName();
final String DEFAULT_BUILD_SCOPED_REPOSITORY_DIR = targetDirectory + "/repository/" + buildScopeRepositoryName;
final String DEFAULT_CACHE_BUILD_SCOPED_REPO = targetDirectory + "/cache/" + buildScopeRepositoryName;
getProject().log("Registering build scoped repository in " + DEFAULT_BUILD_SCOPED_REPOSITORY_DIR,
Project.MSG_DEBUG);
final String CACHENAME = "build-scoped-cache-" + buildScopeRepositoryName;
log("Registering build scope repository : " + getName() + " in " + DEFAULT_BUILD_SCOPED_REPOSITORY_DIR,
Project.MSG_DEBUG);
// Get the project ivy instance
IvySettings settings = getSettings();
// Create a cache for build scoped repository
File cacheDir = new File(DEFAULT_CACHE_BUILD_SCOPED_REPO);
EasyAntRepositoryCacheManager rcm = new EasyAntRepositoryCacheManager(CACHENAME, settings, cacheDir);
rcm.setUseOrigin(true); // no need to copy temporary build artifacts
// into temporary cache.
// Register the repository cache
settings.addConfigured(rcm);
// Create the build scoped repository
FileSystemResolver buildRepository = new FileSystemResolver();
buildRepository.addArtifactPattern(DEFAULT_BUILD_SCOPED_REPOSITORY_DIR + getArtifactPattern());
buildRepository.addIvyPattern(DEFAULT_BUILD_SCOPED_REPOSITORY_DIR + getIvyPattern());
// bind to the repocache
buildRepository.setCache(CACHENAME);
buildRepository.setName(buildScopeRepositoryName);
if (isDictator()) {
settings.setDictatorResolver(buildRepository);
} else if (isGenerateWrapperResoler()) {
// Search the default resolver after the build-scoped repo
DependencyResolver dr = settings.getDefaultResolver();
if (dr == null) {
throw new BuildException("Unable to find a default resolver");
}
// replace the default resolver with a chain resolver, which first
// searches
// in the build repository, then in the old default.
ChainResolver resolver = new ChainResolver();
resolver.setName(dr.getName()); // same name as old default
resolver.setReturnFirst(true);
resolver.add(buildRepository);
resolver.add(dr);
dr.setName("delegate." + dr.getName()); // give old default a new name
settings.addResolver(dr);
settings.addResolver(resolver);
}
settings.addResolver(buildRepository);
log(getName() + " registration succeeded", Project.MSG_DEBUG);
}