org.apache.james.mailet.AggregateMailetdocsReport Maven / Gradle / Ivy
/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
* distributed with this work for additional information *
* regarding copyright ownership. The ASF licenses this file *
* to you 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.apache.james.mailet;
import java.util.List;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
/**
*
* Generates catalog and reports on mailets and matchers.
* Aggregates mailets and matcher within subprojects
* when run from the top level.
*
* Notes
*
* - Should only used as a report.
* - Mailets are instantiated during report production.
*
*/
@Mojo(name = "aggregate",
requiresDependencyResolution = ResolutionScope.COMPILE,
aggregator = true)
public class AggregateMailetdocsReport extends AbstractMailetdocsReport {
@Parameter(defaultValue = "${reactorProjects}",
readonly = true)
private List reactorProjects;
/**
* Build descriptors for mailets contained
* within subprojects.
* @param project not null
*/
@Override
protected final List buildDescriptors(MavenProject project) {
final DefaultDescriptorsExtractor extractor = new DefaultDescriptorsExtractor();
if (project.isExecutionRoot()) {
logProject(project);
for (MavenProject subproject : reactorProjects) {
logSubproject(subproject);
extractor.extract(subproject, getLog());
}
} else {
logNoSubprojects(project);
extractor.extract(project, getLog());
}
return extractor.descriptors();
}
private void logProject(MavenProject project) {
if (getLog().isDebugEnabled()) {
getLog().debug("Aggregating mailets within " + project.getName());
}
}
private void logSubproject(MavenProject subproject) {
if (getLog().isDebugEnabled()) {
getLog().debug("Adding descriptors in " + subproject.getName());
}
}
private void logNoSubprojects(MavenProject project) {
if (getLog().isDebugEnabled()) {
getLog().debug("No subprojects for " + project.getName());
}
}
}