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*
*
*
**
*
*

Reply via email to