in src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java [240:354]
public void executeReport( Locale locale )
throws MavenReportException
{
failIfUsingDeprecatedParameter( escapeHTML, "escapeHTML",
"Using markup inside CDATA sections does not work for all output formats!" );
failIfUsingDeprecatedParameter( issueLinkTemplate, "issueLinkTemplate",
"You must use 'issueLinkTemplatePerSystem' for the system '"
+ ChangesReportGenerator.DEFAULT_ISSUE_SYSTEM_KEY + "' instead." );
Date now = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( publishDateFormat, new Locale( publishDateLocale ) );
Properties additionalProperties = new Properties();
additionalProperties.put( "publishDate", simpleDateFormat.format( now ) );
ChangesXML changesXml = getChangesFromFile( xmlPath, project, additionalProperties );
if ( changesXml == null )
{
return;
}
if ( aggregated )
{
final String basePath = project.getBasedir().getAbsolutePath();
final String absolutePath = xmlPath.getAbsolutePath();
if ( !absolutePath.startsWith( basePath ) )
{
getLog().warn( "xmlPath should be within the project dir for aggregated changes report." );
return;
}
final String relativePath = absolutePath.substring( basePath.length() );
List<Release> releaseList = changesXml.getReleaseList();
for ( Object o : project.getCollectedProjects() )
{
final MavenProject childProject = (MavenProject) o;
final File changesFile = new File( childProject.getBasedir(), relativePath );
final ChangesXML childXml = getChangesFromFile( changesFile, childProject, additionalProperties );
if ( childXml != null )
{
releaseList =
releaseUtils.mergeReleases( releaseList, childProject.getName(), childXml.getReleaseList() );
}
}
changesXml.setReleaseList( releaseList );
}
ChangesReportGenerator report = new ChangesReportGenerator( changesXml.getReleaseList() );
report.setAuthor( changesXml.getAuthor() );
report.setTitle( changesXml.getTitle() );
report.setEscapeHTML( true );
// Create a case insensitive version of issueLinkTemplatePerSystem
// We need something case insensitive to maintain backward compatibility
if ( issueLinkTemplatePerSystem == null )
{
caseInsensitiveIssueLinkTemplatePerSystem = new CaseInsensitiveMap();
}
else
{
caseInsensitiveIssueLinkTemplatePerSystem = new CaseInsensitiveMap( issueLinkTemplatePerSystem );
}
// Set good default values for issue management systems here
addIssueLinkTemplate( ChangesReportGenerator.DEFAULT_ISSUE_SYSTEM_KEY, "%URL%/ViewIssue.jspa?key=%ISSUE%" );
addIssueLinkTemplate( "Bitbucket", "%URL%/issue/%ISSUE%" );
addIssueLinkTemplate( "Bugzilla", "%URL%/show_bug.cgi?id=%ISSUE%" );
addIssueLinkTemplate( "GitHub", "%URL%/%ISSUE%" );
addIssueLinkTemplate( "GoogleCode", "%URL%/detail?id=%ISSUE%" );
addIssueLinkTemplate( "JIRA", "%URL%/%ISSUE%" );
addIssueLinkTemplate( "Mantis", "%URL%/view.php?id=%ISSUE%" );
addIssueLinkTemplate( "MKS", "%URL%/viewissue?selection=%ISSUE%" );
addIssueLinkTemplate( "Redmine", "%URL%/issues/show/%ISSUE%" );
addIssueLinkTemplate( "Scarab", "%URL%/issues/id/%ISSUE%" );
addIssueLinkTemplate( "SourceForge", "http://sourceforge.net/support/tracker.php?aid=%ISSUE%" );
addIssueLinkTemplate( "SourceForge2", "%URL%/%ISSUE%" );
addIssueLinkTemplate( "Trac", "%URL%/ticket/%ISSUE%" );
addIssueLinkTemplate( "Trackplus", "%URL%/printItem.action?key=%ISSUE%" );
addIssueLinkTemplate( "Tuleap", "%URL%/?aid=%ISSUE%" );
addIssueLinkTemplate( "YouTrack", "%URL%/issue/%ISSUE%" );
// @todo Add more issue management systems here
// Remember to also add documentation in usage.apt.vm
// Show the current issueLinkTemplatePerSystem configuration
logIssueLinkTemplatePerSystem( caseInsensitiveIssueLinkTemplatePerSystem );
report.setIssueLinksPerSystem( caseInsensitiveIssueLinkTemplatePerSystem );
report.setSystem( system );
report.setTeam( team );
report.setUrl( url );
report.setAddActionDate( addActionDate );
if ( url == null || url.isEmpty() )
{
getLog().warn( "No issue management URL defined in POM. Links to your issues will not work correctly." );
}
boolean feedGenerated = false;
if ( feedType != null && !feedType.isEmpty() )
{
feedGenerated = generateFeed( changesXml, locale );
}
report.setLinkToFeed( feedGenerated );
report.doGenerateReport( getBundle( locale ), getSink() );
// Copy the images
copyStaticResources();
}