in src/main/java/org/apache/maven/plugins/linkcheck/SiteInvoker.java [85:148]
public void invokeSite( MavenProject project, File tmpReportingOutputDirectory )
throws IOException
{
String mavenHome = getMavenHome();
if ( mavenHome == null || mavenHome.isEmpty() )
{
// CHECKSTYLE_OFF: LineLength
getLog().error( "Could NOT invoke Maven because no Maven Home is defined. "
+ "You need to set the M2_HOME system env variable or a 'maven.home' Java system property." );
// CHECKSTYLE_ON: LineLength
return;
}
// invoker site parameters
List<String> goals = Collections.singletonList( "site" );
Properties properties = new Properties();
properties.put( "linkcheck.skip", "true" ); // to stop recursion
File invokerLog =
FileUtils.createTempFile( "invoker-site-plugin", ".txt", new File( project.getBuild().getDirectory() ) );
// clone project and set a new reporting output dir
MavenProject clone;
try
{
clone = (MavenProject) project.clone();
}
catch ( CloneNotSupportedException e )
{
IOException ioe = new IOException( "CloneNotSupportedException: " + e.getMessage() );
ioe.setStackTrace( e.getStackTrace() );
throw ioe;
}
// MLINKCHECK-1
if ( clone.getOriginalModel().getReporting() == null )
{
clone.getOriginalModel().setReporting( new Reporting() );
}
clone.getOriginalModel().getReporting().setOutputDirectory( tmpReportingOutputDirectory.getAbsolutePath() );
List<String> profileIds = getActiveProfileIds( clone );
// create the original model as tmp pom file for the invoker
File tmpProjectFile = FileUtils.createTempFile( "pom", ".xml", project.getBasedir() );
try ( Writer writer = WriterFactory.newXmlWriter( tmpProjectFile ) )
{
clone.writeOriginalModel( writer );
}
// invoke it
try
{
invoke( tmpProjectFile, invokerLog, mavenHome, goals, profileIds, properties );
}
finally
{
if ( !getLog().isDebugEnabled() )
{
tmpProjectFile.delete();
}
}
}