maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doron Solomon (JIRA)" <j...@codehaus.org>
Subject [jira] Commented: (MSITE-163) The modules menu is not inherited
Date Fri, 06 Jun 2008 16:12:13 GMT

    [ http://jira.codehaus.org/browse/MSITE-163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=137655#action_137655
] 

Doron Solomon commented on MSITE-163:
-------------------------------------

I've been looking into this issue and have come up with a proposed solution ... I don't presume
to know enough about the way the plugin should work to say it's the best solution, so I hope
that someone who knows more than I do can comment.

In version 2.0-beta-6, the problem is in the method {{populateModules}} in the class {{org.apache.maven.plugins.site.AbstractSiteMojo}}.
 In this method two booleans are checked - {{keepInheritedRefs}} and {{menu.isInheritAsRef()}}.
 If either of these is false, then the modules are populated (otherwise, the element is left
alone to inherit from a parent).  If the project has no modules, then the {{<menu ref="modules">}}
element is removed by calling method {{decorationModel.removeMenuRef}}.  However, this seems
to go against the purpose of the {{keepInhertiedRefs}} boolean ... if we want to keep inherited
refs then shouldn't the element remain in the site descriptor, even if there are no modules
of *this* POM?

I tried surrounding the call to {{decorationModel.removeMenuRef}} with an if statement:

{code:title=AbstractSiteMojo.java}
if ( !keepInheritedRefs )
{
    decorationModel.removeMenuRef( "modules" );
}
{code}

The problem with this is that it now keeps the {{<menu ref="modules">}} element even
if no inherit attribute is set, which again (I believe) goes against the purpose of this attribute.
 So I was able to get the {{<menu ref="modules">}} element to remain in the installed/deployed
site descriptor ONLY if the element contains an inherit attribute by changing the above code
to:

{code:title=AbstractSiteMojo.java}
if ( !keepInheritedRefs || menu.getInherit() == null )
{
    decorationModel.removeMenuRef( "modules" );
}
{code}

This made me stop and think about the {{keepInheritedRefs}} flag.  I'm not sure what its purpose
is, but it seems to me that it should be set to true or false depending on whether or not
{{menu.getInherit()}} is null (i.e. set to false if null).  But since I can't be certain of
the purpose of {{keepInheritedRefs}} I can't say for sure that this is correct.

I believe that all of the above would also apply to the {{populateProjectParentMenu}} method
that deals with the {{<menu ref="parent">}} element, although I have not tested this.

Finally, it is worth noting that in the trunk the {{populateModules}} method has moved to
the maven-doxia-tools artifact (groupId org.apache.maven.shared) into the class {{org.apache.maven.doxia.tools.DefaultSiteTool}}
(the method is also defined in the {{SiteTool}} interface).  Perhaps this issue should be
moved to that project?

> The modules menu is not inherited
> ---------------------------------
>
>                 Key: MSITE-163
>                 URL: http://jira.codehaus.org/browse/MSITE-163
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: inheritance
>    Affects Versions: 2.0-beta-4
>         Environment: ubuntu linux / debian linux
>            Reporter: Andrew Williams
>             Fix For: 2.0-beta-8
>
>
> if I have a site.xml in a parent project that contains the line <menu ref="modules"
inherit="top" /> it is not inherited by child projects.
> <menu ref="reports" inherit="top" /> works, as does parent.
> This happens when the parent project has no modules of its own.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message