This is an automated email from the ASF dual-hosted git repository. michaelo pushed a commit to branch MSITE-220 in repository https://gitbox.apache.org/repos/asf/maven-site-plugin.git
commit 21a5b339ef4f11a9b254b1b9c690f3e8f00e484d Author: Michael Osipov <micha...@apache.org> AuthorDate: Sun Jan 15 00:56:48 2023 +0100 [MSITE-220] site:run mojo will not display Javadoc or JXR report results This closes #122 --- .../apache/maven/plugins/site/run/DoxiaFilter.java | 20 ++++++++++++-------- .../apache/maven/plugins/site/run/SiteRunMojo.java | 4 +++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java b/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java index 7a11e2a8..8853984e 100644 --- a/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java +++ b/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java @@ -37,7 +37,10 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; +import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Locale; import java.util.Map; @@ -50,6 +53,8 @@ import java.util.Map; public class DoxiaFilter implements Filter { + public static final String OUTPUT_DIRECTORY_KEY = "outputDirectory"; + public static final String SITE_RENDERER_KEY = "siteRenderer"; public static final String I18N_DOXIA_CONTEXTS_KEY = "i18nDoxiaContexts"; @@ -58,6 +63,8 @@ public class DoxiaFilter private ServletContext servletContext; + private File outputDirectory; + private Renderer siteRenderer; private Map<String, DoxiaBean> i18nDoxiaContexts; @@ -72,6 +79,8 @@ public class DoxiaFilter { servletContext = filterConfig.getServletContext(); + outputDirectory = (File) servletContext.getAttribute( OUTPUT_DIRECTORY_KEY ); + siteRenderer = (Renderer) servletContext.getAttribute( SITE_RENDERER_KEY ); i18nDoxiaContexts = (Map<String, DoxiaBean>) servletContext.getAttribute( I18N_DOXIA_CONTEXTS_KEY ); @@ -154,14 +163,9 @@ public class DoxiaFilter ReportDocumentRenderer reportDocumentRenderer = (ReportDocumentRenderer) renderer; if ( reportDocumentRenderer.isExternalReport() ) { - try - { - filterChain.doFilter( servletRequest, servletResponse ); - } - catch ( Exception e ) - { - throw new ServletException( e ); - } + Path externalReportFile = outputDirectory.toPath().resolve( renderer.getOutputName() ); + servletResponse.reset(); + Files.copy( externalReportFile, servletResponse.getOutputStream() ); } } diff --git a/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java b/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java index 811e791a..e324a2fd 100644 --- a/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java +++ b/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java @@ -25,6 +25,7 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; 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.plugins.site.render.AbstractSiteRenderingMojo; import org.apache.maven.reporting.exec.MavenReportExecution; import org.codehaus.plexus.util.IOUtil; @@ -49,7 +50,7 @@ import java.util.Map; * @author <a href="mailto:br...@apache.org">Brett Porter</a> * */ -@Mojo( name = "run", aggregator = true, requiresReports = true ) +@Mojo( name = "run", requiresDependencyResolution = ResolutionScope.TEST, requiresReports = true ) public class SiteRunMojo extends AbstractSiteRenderingMojo { @@ -122,6 +123,7 @@ public class SiteRunMojo WebAppContext webapp = new WebAppContext(); webapp.setContextPath( "/" ); webapp.setResourceBase( tempWebappDirectory.getAbsolutePath() ); + webapp.setAttribute( DoxiaFilter.OUTPUT_DIRECTORY_KEY, tempWebappDirectory ); webapp.setAttribute( DoxiaFilter.SITE_RENDERER_KEY, siteRenderer ); webapp.getInitParams().put( "org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false" );