in src/main/java/org/apache/sling/feature/maven/mojos/AbstractIncludingFeatureMojo.java [188:227]
private void selectRefsFiles(final String selection, final List<String> excludes, final Map<String, Feature> result)
throws MojoExecutionException {
final DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(this.project.getBasedir());
if (!excludes.isEmpty()) {
scanner.setExcludes(excludes.toArray(new String[excludes.size()]));
}
scanner.setIncludes(new String[] {selection});
scanner.scan();
if (!selection.contains("*") && scanner.getIncludedFiles().length == 0) {
throw new MojoExecutionException("RefsInclude " + selection + " not found.");
}
// sort result
final List<String> includedFiles = new ArrayList<>(Arrays.asList(scanner.getIncludedFiles()));
Collections.sort(includedFiles);
for (final String path : includedFiles) {
final File selectedFile = new File(this.project.getBasedir(), path.replace('/', File.separatorChar));
try {
final List<String> urls = IOUtils.parseFeatureRefFile(selectedFile);
for (final String url : urls) {
try {
final ArtifactId id = ArtifactId.parse(url);
if (ProjectHelper.isLocalProjectArtifact(this.project, id)) {
throw new MojoExecutionException(
"RefsFile configuration is used to select a local feature: " + id.toMvnId());
}
final Feature feature = ProjectHelper.getOrResolveFeature(
this.project, this.mavenSession, this.artifactHandlerManager, this.repoSystem, id);
result.put(id.toMvnUrl(), feature);
} catch (final IllegalArgumentException e) {
throw new MojoExecutionException("Reference " + url + " in " + selectedFile.getAbsolutePath()
+ " is not a supported url.");
}
}
} catch (final IOException e) {
throw new MojoExecutionException(e.getMessage(), e);
}
}
}