in src/main/java/org/apache/maven/shared/dependency/analyzer/ProjectDependencyAnalysis.java [195:241]
public ProjectDependencyAnalysis forceDeclaredDependenciesUsage(String[] forceUsedDependencies)
throws ProjectDependencyAnalyzerException {
Set<String> forced = new HashSet<>(Arrays.asList(forceUsedDependencies));
Set<Artifact> forcedUnusedDeclared = new HashSet<>(unusedDeclaredArtifacts);
Set<Artifact> forcedUsedDeclared = new HashSet<>(usedDeclaredArtifacts.keySet());
Iterator<Artifact> iter = forcedUnusedDeclared.iterator();
while (iter.hasNext()) {
Artifact artifact = iter.next();
if (forced.remove(artifact.getGroupId() + ':' + artifact.getArtifactId())) {
// ok, change artifact status from unused-declared to used-declared
iter.remove();
forcedUsedDeclared.add(artifact);
}
}
if (!forced.isEmpty()) {
// trying to force dependencies as used-declared which were not declared or already detected as used
Set<String> used = new HashSet<>();
for (Artifact artifact : usedDeclaredArtifacts.keySet()) {
String id = artifact.getGroupId() + ':' + artifact.getArtifactId();
if (forced.remove(id)) {
used.add(id);
}
}
StringBuilder builder = new StringBuilder();
if (!forced.isEmpty()) {
builder.append("not declared: ").append(forced);
}
if (!used.isEmpty()) {
if (builder.length() > 0) {
builder.append(" and ");
}
builder.append("declared but already detected as used: ").append(used);
}
throw new ProjectDependencyAnalyzerException("Trying to force use of dependencies which are " + builder);
}
return new ProjectDependencyAnalysis(
mapWithKeys(forcedUsedDeclared),
usedUndeclaredArtifacts,
forcedUnusedDeclared,
testArtifactsWithNonTestScope);
}