use of org.apache.maven.enforcer.rule.api.EnforcerRuleHelper in project quarkus by quarkusio.
the class DeploymentDependencyRuleSupport method execute.
@Override
public final void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
logger = helper.getLog();
MavenProject project;
try {
project = (MavenProject) helper.evaluate("${project}");
} catch (ExpressionEvaluationException e) {
throw new IllegalStateException("Failed to get project from EnforcerRuleHelper", e);
}
if (!isCheckRequired(project)) {
return;
}
// general notes:
// - "artifacts" are needed to retrieve the actual jar files
// - "dependencies" are needed to limit the scope to only the direct dependencies of the current module
// and to check for the proper scope, type and exclusions
// - parents are not gathered here since it is expected that the rule is also active for those parents
// or those parents are not relevant
Map<String, Artifact> nonDeploymentArtifactsByGAV = project.getArtifacts().stream().filter(artifact -> "jar".equals(artifact.getType())).filter(artifact -> artifact.getGroupId().startsWith(GROUP_ID_PREFIX)).filter(artifact -> !artifact.getArtifactId().endsWith(DEPLOYMENT_ARTIFACT_ID_SUFFIX)).collect(Collectors.toMap(this::buildGAVKey, a -> a));
// If the build goal is "late" enough, artifacts for the respective scope *will* be resolved automatically.
if (nonDeploymentArtifactsByGAV.values().stream().anyMatch(artifact -> !artifact.isResolved())) {
logger.warn("Skipping rule " + RequiresMinimalDeploymentDependency.class.getSimpleName() + ": Artifacts are not resolved, consider using a later build goal like 'package'.");
return;
}
Map<String, Dependency> directDepsByGAV = project.getDependencies().stream().filter(d -> d.getGroupId().startsWith(GROUP_ID_PREFIX)).collect(Collectors.toMap(d -> d.getGroupId() + ":" + d.getArtifactId() + ":" + d.getVersion(), d -> d, (a, b) -> a));
execute(project, nonDeploymentArtifactsByGAV, directDepsByGAV);
}
Aggregations