Hi and thanks for the response,
My Mojo already overwrites the isExternalReport() function and returns true
into it.
To deep a little more I've tried to debug the execution of the Mojo when
running a 'mvn site' command using that Mojo.
It seems that the function 'executeReport' associated to a reporting Mojo
is called before 'isExternalReport' is used.
The 'execute' method associated to the 'AbstractMavenReport' (I'm using
'maven-reporting-impl' version 2.2) class contains the following lines :
Writer writer = null;
try
{
File outputDirectory = new File( getOutputDirectory() );
String filename = getOutputName() + ".html";
Locale locale = Locale.getDefault();
SiteRenderingContext siteContext = new SiteRenderingContext();
siteContext.setDecoration( new DecorationModel() );
siteContext.setTemplateName(
"org/apache/maven/doxia/siterenderer/resources/default-site.vm" );
siteContext.setLocale( locale );
RenderingContext context = new RenderingContext(
outputDirectory, filename );
SiteRendererSink sink = new SiteRendererSink( context );
generate( sink, null, locale );
...
The 'generate' function then calls the reporting mojo 'executeReport'
function, so I think my locking problems comes from one of the following
calls :
- 'new RenderingContext'
- 'new SiteRendererSink'
Do you have any other ideas ?
Perhaps I should post this message on the developer Mailing List, my
problems seems to be linked to what Maven (or the 'maven-reporting-impl
plugin executes internally ?
Thanks,
Baptiste
2012/12/16 Robert Scholte <[email protected]>
> This is probably what you need:
> from org.apache.maven.reporting.**MavenReport.isExternalReport()
>
> /**
> * An external report is a report which calls a third party program
> which generates some reports too.
> * A good example is javadoc tool.
> *
> * @return <tt>true</tt> if this report is external, <tt>false</tt>
> otherwise.
> * Default should be <tt>false</tt>.
> */
> boolean isExternalReport();
>
>
> Op Tue, 11 Dec 2012 23:42:43 +0100 schreef Baptiste Gaillard <
> [email protected]>**:
>
> Hi, I'm currently creating a new Maven Reporting Plugin which integrate an
>> external tool used to generate a Javascript documentation in my Maven Web
>> Site.
>>
>> My report Mojo is very simple and is declared using :
>>
>> /**
>> * @goal jsduck
>> * @phase site
>> */
>> public class JSDuckReportMojo extends AbstractMavenReport {
>> ...
>> }
>>
>> I encounter a file locking problem (i.e already opened elsewhere and not
>> closed) at the beginning of my 'executeReport' method :
>>
>> *
>>
>> protected void executeReport(Locale locale) throws MavenReportException {
>>
>> // JSDuck creates an 'index.html' file itself and crashes if one file
>> with this name already exist
>> File jsduckIndex = new File("target/site/jsduck/**index.html");
>>
>> if (jsduckIndex.exists() && !jsduckIndex.delete()) {
>> throw new MavenReportException("Fail to delete the previously
>> generated index.html !"
>> );
>> }
>>
>> // Use a document generator which absolutly need to have an empty
>> target directory
>> ...
>> }
>> *
>>
>> The tool I'm integrating is called 'jsduck' and absolutely needs to have
>> an
>> empty target directory to work, its root index file is called
>> 'index.html'.
>>
>> So I've also implemented the 'getOutputName' function :
>>
>> public String getOutputName() {
>> return "jsduck/index";
>> }
>>
>> But, the file 'target/site/jsduck/index.**html' has already been created
>> automagically by Maven.
>> In the 'executeReport' this file is there, empty and locked !
>>
>> So, I can't delete this 'index.html' file and let JSDuck create itself :-(
>>
>> Is it normal that Maven locks this 'index.html' file (because it has been
>> declared in the 'getOutputName()' ) ?
>> How can I unlock this file inside the 'executeReport' function to let
>> JSDuck generate my documentation ?
>>
>> I've already tried to debug the 'AbstractMavenReport' class and only found
>> a 'PrintWriter' attached to the 'Sink' (in the 'execute' method) which
>> could cause this locking problem.
>> Calling the 'close' method at the beginning of the 'executeReport' method
>> seems to have no effect...
>>
>> Thanks for you help,
>>
>> Baptiste
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail:
> users-unsubscribe@maven.**apache.org<[email protected]>
> For additional commands, e-mail: [email protected]
>
>
--
*Baptiste GAILLARD*
*Mobile : +33(6) 85 12 81 26 <http://+33%286%29%2085%2012%2081%2026%20/>*
*Mail :* *[email protected]*
*http://www.gomoob.com*
*
*
**
*
*