You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Kenney Westerhof (JIRA)" <ji...@codehaus.org> on 2006/05/09 14:35:40 UTC

[jira] Created: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

modules list empty if modules don't use this project as parent in reactor build
-------------------------------------------------------------------------------

         Key: MSITE-129
         URL: http://jira.codehaus.org/browse/MSITE-129
     Project: Maven 2.x Site Plugin
        Type: Bug

    Versions: 2.0-beta-5    
    Reporter: Kenney Westerhof
 Assigned to: Kenney Westerhof 
    Priority: Minor


The code in the AbstractSiteRenderingMojo does the following:

- if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
projects to see if it's parent project equals the current project. If so, it's marked as a module.

- if it's running on a single project, the project.build.modules is consulted and those modules
are marked as modules.

I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
built everything and generate a site. However, this fake root pom is never used as a parent - there's
a /pom/pom.xml project for that.

The result of this is that the modules list is empty.

A workaround is to first run 'mvn site' and then 'mvn site -N'.


I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
- a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
- a project hierarchy layout based on <parent>
and one or the other is used depending on wheter the build contains more than 1 project or not.

My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
the site should use the <modules>, not the <parent>. 
It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).

Thoughts?


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


[jira] Updated: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Dennis Lundberg (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dennis Lundberg updated MSITE-129:
----------------------------------

    Component/s: multi module

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=comments#action_65330 ] 

John Allen commented on MSITE-129:
----------------------------------

IMHO this all comes about from the approach of only providing access to the model hierarchy (i.e. fully interpolated and evaluated parent and child project hierarchy) via the reactor and the fact that a <parent> referred POM doesn't have to refer to its children via <modules>. (note that the project.getParent() is broken too - you dont get an evaluated model back, another reason we try and use the reactor for model accessing). 

It is a strange relationship to have containment relationships that are different from the inheritance relationship in this kind of setup. Any hardened Makefile builder knows that things can get very strange if you do too much of that. Inclusion techniques are a much better way to go when trying to achieve these kind of space saver/convience hacks.

What are project modules? Are they children? Are they a 'type of' relationship? Currently not (as in your case) but i bet 99% of people will assume they are and align their parent and module relationships that way. I think this is the killer point, if in a OOAD space you have a means of doing something that most people would not think of as possible in OOAS it's probably not a good thing to allow them to do it.

I do see the benefits of this technique (well kind of) but i would have thought you could maintain a true parent-child relqationship and not have non-parent projects acting as collector projects for modules not in their ancestory. 

The only reason to refer to the reactor in all this is to work around failings in the maven model runtime that does not allow you to access module resources via the project.getModules(). For this reason the two schemes of module accessing (one via the reactor and the other via a direct filesystem read and build) are used and it is the inconsistency between this inheritance and containment scheme that you've introduced (or leveraged) that really shows these issues in their true, nasty light.

In my simple take on OO (spanning 15 years) I think one should be able to access the full object hierarchy without running in the reactor. That would allow module state to be accessed during -N builds. I also think <module> means child and therefore the child and parent should be related.

I struggled greatly with this aspect of the maven design/implementation when i first came to m2 and despite understanding where it derives from I still feel it is an an indication of someting not being quite right. Should a project be buildable in isolation of its parent? No, it needs its inherited state and will source it either from the filesystem or the repository. Should a project be able to build in isolation of its modules? Yes/No, Yes for *its* generated artefacts (scope and responsibilities and all that) but then No when the site plugin tries to access its child project's state...

Just my $0.02...







> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>          Key: MSITE-129
>          URL: http://jira.codehaus.org/browse/MSITE-129
>      Project: Maven 2.x Site Plugin
>         Type: Bug

>     Versions: 2.0-beta-5
>     Reporter: Kenney Westerhof
>     Assignee: Kenney Westerhof
>     Priority: Minor
>      Fix For: 2.0

>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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


[jira] Updated: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Dennis Lundberg (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dennis Lundberg updated MSITE-129:
----------------------------------

    Fix Version/s:     (was: 2.1)
                   2.0

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Jason Melnick (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=comments#action_84679 ] 
            
Jason Melnick commented on MSITE-129:
-------------------------------------

IMHO a "module" doesn't necessarily mean "child", nor should it... Project aggregation via the reactor is just that - aggregation and shouldn't have any bearing on inheritance.

This is my inheritance tree:

Enterprise POM (xxxManagement sections)
     Enterprise Base POM (base declarations)
          Web POM
          Jar POM
          EJB POM

That hierarchy is all defined at the enterprise level. A new project that wants to develop under our build system needs to inherit from each of the artifact types. I don't want to have to create basically a dummy set of poms between the parent poms and the project child poms just so that a reactor project that builds the application can correctly generate the website. 

Since one branch of the site logic simply uses the <modules> declaration at face value (i.e. relative directories), it could make links based on the default target locations, or it could inspect the POMs contained within the directories of the declared modules. Moreoever, additional configuration options could be added to the site plugin configuration to make link creation locations more logical.


> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>         Assigned To: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0.1
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Dennis Lundberg (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=164486#action_164486 ] 

Dennis Lundberg commented on MSITE-129:
---------------------------------------

Is there someone out there who can verify this?

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Dennis Lundberg (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=162993#action_162993 ] 

Dennis Lundberg commented on MSITE-129:
---------------------------------------

I have applied John's patch for MSHARED-83 and deployed new SNAPSHOTs. I would appreciate if some of you can test that this issue is solved in maven-site-plugin 2.0-SNAPSHOT. Please report back.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.1
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Paul Harrison (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=149917#action_149917 ] 

Paul Harrison commented on MSITE-129:
-------------------------------------

I too would like to see this issue fixed - I believe that it was central to the maven 2 design that aggregation and inheritance were separated - see http://maven.apache.org/pom.html#Inheritance_v - somehow over time the site plugin seems to have forgotten this...

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Mykel Alvis (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_117449 ] 

Mykel Alvis commented on MSITE-129:
-----------------------------------

I have to concur with Venelin and Matt (and maybe a couple of other people).   I would like to +1 the importance of getting something resolved WRT this.


> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Per Lindfors (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=165489#action_165489 ] 

Per Lindfors commented on MSITE-129:
------------------------------------

now I got it!

??When a project deploys itself into the URL space, it uses its distro.site.url to work out where it should go.??

By defining the distribution url for each module and the multimodule project I got the correct directory layout for the deployed site with correct limks to the modules.

Thanx!




> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Issue Comment Edited: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Matt Read (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103088 ] 

Matt Read edited comment on MSITE-129 at 7/24/07 5:28 AM:
----------------------------------------------------------

I think the site should display both and we would certainly benefit from some very explicit traversable documentation of both styles of pom relationships as they both have a very significant meaning in terms of logical and physical component and package breakdown.

However I don't think they should necessarily be related. After a fair amount of experimentation we use pom inheritance to manage common maven build behaviour and modules to manage common application sub-system organisation. For example, all webapps inherit from the same base pom but these webapps may appear in completely different module hierarchies. E.g.

Common maven behaviour via pom inheritance:

  Base WAR pom
    |__  app1 WAR pom
    |__  app2 WAR pom
  Base EAR pom
    |__  app1 EAR pom
    |__  app2 EAR pom

Common sub-systems via modules:

app1 pom
    |__  app1 WAR
    |__  app1 EAR
app2 pom
    |__  app2 WAR
    |__  app2 EAR

Certainly the current site plugin behaviour is not particularly compatible with this and I'm looking forward to an out-of-the-box site generation that produces nicely hierarchical, cross-linked navigation for reactor builds without requiring additional manual configuration.



 was:
I think the site should display both and we would certainly benefit from some very explicit traversable documentation of both styles of pom relationships as they both have a very significant meaning in terms of logical and physical component and package breakdown.

However I don't think they should necessarily be related. After a fair amount of experimentation we use pom inheritance to manage common maven build behaviour and modules to manage common application sub-system organisation. For example, all webapps inherit from the same base pom but these webapps may appear in completely different module hierarchies. E.g.

Common maven behaviour via pom inheritance:

Base WAR pom
    |__  app1 WAR pom
    |__  app2 WAR pom
Base EAR pom
    |__  app1 EAR pom
    |__  app2 EAR pom

Common sub-systems via modules:

app1 pom
    |__  app1 WAR
    |__  app1 EAR
app2 pom
    |__  app2 WAR
    |__  app2 EAR

Certainly the current site plugin behaviour is not particularly compatible with this and I'm looking forward to an out-of-the-box site generation that produces nicely hierarchical, cross-linked navigation for reactor builds without requiring additional manual configuration.


> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Per Lindfors (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=165410#action_165410 ] 

Per Lindfors commented on MSITE-129:
------------------------------------

??The structure you have drawn as 'what it should be' is stating that the submodules inherit from myproj, which they dont. And thats why in the generated site they dont live under it.??
bq. Yes I know. What I'm trying to say is that it would be nice if the site-plugin could handle the modules of myproj the same way it does when the modules inherit from myproj.

??You did deploy the projects to check that the module links were woerking didnt you? They will never work in an undeployed state.??
bq. Yes.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Updated: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Brett Porter (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MSITE-129?page=all ]

Brett Porter updated MSITE-129:
-------------------------------

    Fix Version:     (was: 2.0-beta-5)
                 2.0

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>          Key: MSITE-129
>          URL: http://jira.codehaus.org/browse/MSITE-129
>      Project: Maven 2.x Site Plugin
>         Type: Bug

>     Versions: 2.0-beta-5
>     Reporter: Kenney Westerhof
>     Assignee: Kenney Westerhof
>     Priority: Minor
>      Fix For: 2.0

>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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


[jira] Issue Comment Edited: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=165319#action_165319 ] 

John Allen edited comment on MSITE-129 at 2/12/09 12:00 PM:
------------------------------------------------------------

Module locations (and thus links) are based upon project.distro.site.url  and project.url. They have no bearing on where a module is on the filesystem.

 The structure you have drawn as 'what it should be' is stating that the submodules inherit from myproj, which they dont. And thats why in the generated site they dont live under it.

There are two very different namespaces here and none of them are related.

One is the filesystem. In this case your myproj and its sub dirs. This namespace has no bearing on the URL namespace or for that matter the project inheritance relationships.

The next is the project hierarchy. That does have a relationship to the URL namespace, only IF, you inherit the settings for project.url and project.distributionManagement.site.url. However if you override those at each project level then these two are unrelated.

When a project deploys itself into the URL space, it uses its distro.site.url to work out where it should go. This obviously needs to be related to the project's URL otherwise it will deploy to a location that no other project will ever be able to find by using that project's URL.

The module projects all do the same, namely deploy to locations dependent upon their distro.site.url.

So first up, there is no relationship between the deployemnt URL location and the filesystem structure.

A aggregator project, such as myproj generates links to its modules. These its calculates by asking each module, what is your DEPLOYED project url. Each project returns its URL and the aggregator project calculates the relative paths (if possible) to the module projects from its own URL.

You did deploy the projects to check that the module links were woerking didnt you? They will never work in an undeployed state.


      was (Author: skaze):
    df
  
> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Bugittaa Pahasti (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=135586#action_135586 ] 

Bugittaa Pahasti commented on MSITE-129:
----------------------------------------

The workaround isn't a feasible solution in a CI environment. Considering the number of votes and watchers I would find this bug at least serious, not minor as currently.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Jason Melnick (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=comments#action_84691 ] 
            
Jason Melnick commented on MSITE-129:
-------------------------------------

I would like to have the priority raised on this issue as this will be a factor in whether the enterprise decides to adopt maven for it's centralized builds. The site generation "out-of-the-box" is a more than minor reason that it's being investigated as the tool of choice. 

Yes, there are other ways around this issue, but necessitating inheritance for a reactor build is more than a nuisance at this point. I'm not happy with the enormous parent POM that will now need maintained over the hierarchy I've listed above.

I appreciate any help that can be given :)



> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>         Assigned To: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0.1
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Matt Read (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103088 ] 

Matt Read commented on MSITE-129:
---------------------------------

I think the site should display both and we would certainly benefit from some very explicit traversable documentation of both styles of pom relationships as they both have a very significant meaning in terms of logical and physical component and package breakdown.

However I don't think they should necessarily be related. After a fair amount of experimentation we use pom inheritance to manage common maven build behaviour and modules to manage common application sub-system organisation. For example, all webapps inherit from the same base pom but these webapps may appear in completely different module hierarchies. E.g.

Common maven behaviour via pom inheritance:

Base WAR pom
    |__  app1 WAR pom
    |__  app2 WAR pom
Base EAR pom
    |__  app1 EAR pom
    |__  app2 EAR pom

Common sub-systems via modules:

app1 pom
    |__  app1 WAR
    |__  app1 EAR
app2 pom
    |__  app2 WAR
    |__  app2 EAR

Certainly the current site plugin behaviour is not particularly compatible with this and I'm looking forward to an out-of-the-box site generation that produces nicely hierarchical, cross-linked navigation for reactor builds without requiring additional manual configuration.


> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Issue Comment Edited: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Matt Read (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103088 ] 

Matt Read edited comment on MSITE-129 at 7/24/07 5:28 AM:
----------------------------------------------------------

I think the site should display both and we would certainly benefit from some very explicit traversable documentation of both styles of pom relationships as they both have a very significant meaning in terms of logical and physical component and package breakdown.

However I don't think they should necessarily be related. After a fair amount of experimentation we use pom inheritance to manage common maven build behaviour and modules to manage common application sub-system organisation. For example, all webapps inherit from the same base pom but these webapps may appear in completely different module hierarchies. E.g.

Common maven behaviour via pom inheritance:

Base WAR pom
    __  app1 WAR pom
    __  app2 WAR pom
Base EAR pom
    __  app1 EAR pom
    __  app2 EAR pom

Common sub-systems via modules:

app1 pom
    __  app1 WAR
    __  app1 EAR
app2 pom
    __  app2 WAR
    __  app2 EAR

Certainly the current site plugin behaviour is not particularly compatible with this and I'm looking forward to an out-of-the-box site generation that produces nicely hierarchical, cross-linked navigation for reactor builds without requiring additional manual configuration.



 was:
I think the site should display both and we would certainly benefit from some very explicit traversable documentation of both styles of pom relationships as they both have a very significant meaning in terms of logical and physical component and package breakdown.

However I don't think they should necessarily be related. After a fair amount of experimentation we use pom inheritance to manage common maven build behaviour and modules to manage common application sub-system organisation. For example, all webapps inherit from the same base pom but these webapps may appear in completely different module hierarchies. E.g.

Common maven behaviour via pom inheritance:

  Base WAR pom
    |__  app1 WAR pom
    |__  app2 WAR pom
  Base EAR pom
    |__  app1 EAR pom
    |__  app2 EAR pom

Common sub-systems via modules:

app1 pom
    |__  app1 WAR
    |__  app1 EAR
app2 pom
    |__  app2 WAR
    |__  app2 EAR

Certainly the current site plugin behaviour is not particularly compatible with this and I'm looking forward to an out-of-the-box site generation that produces nicely hierarchical, cross-linked navigation for reactor builds without requiring additional manual configuration.


> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=165319#action_165319 ] 

John Allen commented on MSITE-129:
----------------------------------

df

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Updated: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Dennis Lundberg (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dennis Lundberg updated MSITE-129:
----------------------------------

    Fix Version/s:     (was: 2.0-beta-7)
                   2.0-beta-8

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Issue Comment Edited: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103004 ] 

John Allen edited comment on MSITE-129 at 7/23/07 12:30 PM:
------------------------------------------------------------

I'm curious should a site be displaying a project's modules or a project's children (i.e. 'inherited from' projects)? I know I am more interested in the later when I'm browsing sub-systems, as, as with any design effort, one divides and conquers, layering common behaviour and semantics as you decompose. But I would then expect those children to be part of this natural aggregated scope - if something is a child then it is an ordered  relationship with its parent and it should be possible to view/navigate/build following those relationships in both directions.

It's worth noting that the dual behaviour re how to find parents/modules comes from the attempt to support generating a site for a project that has modules and or a parent but is not running in the reactor. If one says that modules are not children but simply an aggregation, and thus parent's can not know of their children in a declarative way, then the only way to deduce children of a project is to have a reactor and to re-build the inheritance hierarchy from the the edges up, thus discovering the true project ancestry.

Without a declarative way for a parent to specify its children then the parent site will never be able to list its children without a reactor and inferencing. Maybe we should add a new semantic to help us here that differentiates from a project's children (inheritance) and modules (collection)? 


 was:
I'm curious should a site be displaying a project's modules or a project's children (i.e. 'inherited from' projects)? I know I am more interested in the later when I'm browsing sub-systems, as, as with any design effort, one divides and conquers, layering common behaviour and semantics as you decompose. But I would then expect those children to be part of this natural aggregated scope - if something is a child then it is an ordered  relationship with its parent and it should be possible to view/navigate/build following those relationships in both directions.

It's worth noting that the dual behaviour re how to find parents/modules comes the attempt to support generating a site for a project that has modules and or a parent but is not running in the reactor. If one says that modules are not children but simply an aggregation, and thus parent's can not know of their children in a declarative way, then the only way to deduce children of a project is to have a reactor and to re-build the inheritance hierarchy from the the edges up, thus discovering the true project ancestry.

Without a declarative way for a parent to specify its children then the parent site will never be able to list its children without a reactor and inferencing. Maybe we should add a new semantic to help us here that differentiates from a project's children (inheritance) and modules (collection)? 

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Issue Comment Edited: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Johan Andrén (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=139588#action_139588 ] 

johanandren edited comment on MSITE-129 at 6/25/08 2:19 PM:
-------------------------------------------------------------

One more vote about the importance of this issue here.

We have a netbeans-platform application setup like this:

application/
---cluster1/
------module1/
------module2/
---cluster2/
------module3/
------module4/
---common-parent/

where all the maven modules ("clusters", "modules" and "application") share the common-parent as project parent (it primarily containins dependency management). We need to do it this way since the netbeans-maven-plugin only can create an application from project submodules.

If we run site:site on application non-recursive ("mvn -N") this gives us a site for application with each cluster listed as a module. When we run site:site recursively we get a site with no modules listed at all. I'm not 100% sure but it sounds as it is the same problem listed here.

      was (Author: johanandren):
    One more vote about the importance of this issue here.

We have a netbeans-platform application setup like this:

application/
   cluster1/
      module1/
      module2/
   cluster2/
      module3/
      module4/
   common-parent/

where all the maven modules ("clusters", "modules" and "application") share the common-parent containing dependency management. We need to do it this way since the netbeans-maven-plugin only can create an application from project submodules.

If we run site:site on application non-recursive ("mvn -N") this gives us a site for application with each cluster listed as a module. When we run site:site recursively we get a site with no modules listed at all. I'm not 100% sure but it sounds as it is the same problem listed here.
  
> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103004 ] 

John Allen commented on MSITE-129:
----------------------------------

I'm curious should a site be displaying a project's modules or a project's children (i.e. 'inherited from' projects)? I know I am more interested in the later when I'm browsing sub-systems, as, as with any design effort, one divides and conquers, layering common behaviour and semantics as you decompose. But I would then expect those children to be part of this natural aggregated scope - if something is a child then it is an ordered  relationship with its parent and it should be possible to view/navigate/build following those relationships in both directions.

It's worth noting that the dual behaviour re how to find parents/modules comes the attempt to support generating a site for a project that has modules and or a parent but is not running in the reactor. If one says that modules are not children but simply an aggregation, and thus parent's can not know of their children in a declarative way, then the only way to deduce children of a project is to have a reactor and to re-build the inheritance hierarchy from the the edges up, thus discovering the true project ancestry.

Without a declarative way for a parent to specify its children then the parent site will never be able to list its children without a reactor and inferencing. Maybe we should add a new semantic to help us here that differentiates from a project's children (inheritance) and modules (collection)? 

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Issue Comment Edited: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_121582 ] 

skaze edited comment on MSITE-129 at 1/28/08 5:50 PM:
-----------------------------------------------------------

Yeah you're right, the assumption that a project's parent is its aggregator should not be there.

      was (Author: skaze):
    Yeah you're right, the relation between module to parent should not be there. 
  
> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Julien S (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_99870 ] 

Julien S commented on MSITE-129:
--------------------------------

I would also be interested in having this issue fixed.
I also have two different poms. One parent pom (totally outside the hierarchy) and an aggregator POM (one directory above the modules in the filesystem hierarchy), which is only responsible for the WEB site.

So far, this is the only way I found to make continuum happy and to avoid triggering the rebuild of all my modules each time there is a commit in any of them...

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=157111#action_157111 ] 

John Allen commented on MSITE-129:
----------------------------------

Modules should be modules and not children? Fixed in patch attached to MSHARED-83

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Per Lindfors (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=165254#action_165254 ] 

Per Lindfors commented on MSITE-129:
------------------------------------

I have done some quick testing of 2.0-SNAPSHOT from people.apache.org, and this is what I've found so far:

I have the following project structure:

{noformat}
+- myproj/ (parent -> super-pom-A)
     +- module-1 (parent -> super-pom-B)
     +- module-2 (parent -> super-pom-C)
     +- module-3 (parent -> super-pom-D)
     +- src/
          +- site/
               +- site.xml
{noformat}

The directory layout for my deployment site is still not correct/different from the layout created when you have aggregation and inheritence between the "top/current" project and the modules. This is what I get:

{noformat}
+- super-pom-A
     +- myproj
+- super-pom-B
     +- module-1
+- super-pom-C
     +- module-2
+- super-pom-D
     +- module-3
{noformat}

This is what it should look like:

{noformat}
+- myproj
     +- module-1
     +- module-2
     +- module-3
     +- css/
     +- images/
     +- index.html
     +- ...

{noformat}


*Result*
- The module links are created but broken (in beta-7 the links weren't even created - I think). 
- Incorrect structure of site
- the site.xml is not propagated to modules, only to myproj(I don't have site.xml in modules so maybe this isn't a bug/issue?)


> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Andreas Benneke (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=153994#action_153994 ] 

Andreas Benneke commented on MSITE-129:
---------------------------------------

Another vote...

As discussed here Maven has two strictly separate concepts: aggregation and inheritance - but the site-plugin/this bug enforces overlapping... which makes the two concepts much less useful...

Please increase the priority of this bug - thanks!

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Venelin Mitov (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_114300 ] 

Venelin Mitov commented on MSITE-129:
-------------------------------------

I would be also very interested in having this issue fixed.

In the organization where I work we use a model quite similar to the one explained by Mark. Our POM hierarchy contains 3 levels:

1. superpom - contains basic configuration inherited by all projects, for example <reporting>, <dependencyManagement>;
2. project types - contains configuration for specific project types (i.e. common configuration for the maven-eclipse, -ejb, -jar, -war and -ear - plugins); Currently we support the following maven projects: JAR, WAR, EJB and EAR;
3. Individual projects that inherit from one of the project types;

We use maven pom inheritance to express those hierarchical relationships. This way we minimize the effort to configure the individual project poms. On the other side we use maven-modules to manage the application sub-system organization. 

So Matt, I am glad to realize that our solutions are pritty similar, while developed in different organizations, and I beleive this is a quite natural way to take advantage of the Maven 2 Project OBJECT ORIENTED Model.

Is it really so tricky to fix this from implementation point of view?
John, what exactly do you mean by 

"If there are no filesystem modules available then it's a pure nasty hack of setting the module project's name and url to be the value found in the root project's <modules><module> element, which for flat multimodule type scenarios will be "../somename" ( ! )"

Having a look in the Maven-Model specification (http://maven.apache.org/ref/2.0.4/maven-model/maven.html):
modules  - The modules (sometimes called subprojects) to build as a part of this project. Each module listed is a relative path to the directory containing the module.
Wouldn't the maven multimodule build fail if for some reason it cannot find a project's module - otherwise it cannot create the reactor?

Best regards, 
Venelin

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_121582 ] 

John Allen commented on MSITE-129:
----------------------------------

Yeah you're right, the relation between module to parent should not be there. 

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Matt Read (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103353 ] 

Matt Read commented on MSITE-129:
---------------------------------

Yep, horses for courses sounds about right. Certainly my example was fairly simple and there is a strong likelihood of some mix and matching of approaches when the hierarchies get deeper.

Both our examples seem to reinforce the notion that the site plug-in should represent both inheritance and composition relationships regardless of how they are being used.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=165421#action_165421 ] 

John Allen commented on MSITE-129:
----------------------------------

module != child

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103404 ] 

John Allen commented on MSITE-129:
----------------------------------

Kenney, how can we go about dealing with these two cases? 

* A user wishes to have all the modules appear.

Okay so I guess with the tag being called <ref=modules> then this is what it was originally intended to do and the reactor based code should be changed to only find the modules from the reactor, not the inheriting projects (as it does at the moment). 

The benefits to using the reactor is that it's quick and the projects are fully interpolated. If there's no reactor we try and build the models from the fileystem module POMs. I'm not sure how interpolated they are, ie if the module has ${} values in it are they evaluated? (didnt used to be the case but could be now). If there are no filesystem modules available then it's a pure nasty hack of setting the module project's name and url to be the value found in the root project's <modules><module> element, which for flat multimodule type scenarios will be "../somename" ( ! ) 

* A user wishes to have the children appear in the site, regardless of the modules.

This is what users like me want. I guess a configuration option could be used to distinguish this behaviour rather than a new site.xml element. Either way this is easy for the reactor based 'child project's find but for the mvn -N situations one would need to create all the module projects from their file system pom.xml files and then check if their parent clauses match the current project.

Actually that doesn't sound to be bad to me. Thoughts?



> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Updated: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Brett Porter (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MSITE-129?page=all ]

Brett Porter updated MSITE-129:
-------------------------------

    Fix Version: 2.0-beta-5

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>          Key: MSITE-129
>          URL: http://jira.codehaus.org/browse/MSITE-129
>      Project: Maven 2.x Site Plugin
>         Type: Bug

>     Versions: 2.0-beta-5
>     Reporter: Kenney Westerhof
>     Assignee: Kenney Westerhof
>     Priority: Minor
>      Fix For: 2.0-beta-5

>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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


[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_121583 ] 

John Allen commented on MSITE-129:
----------------------------------

It's not a difficult fix, detection of the modules uses reactor or filesystem and uses each module's basedir to match against the <module> declared in the aggregator project (i.e. the one we're processing), will checkout out the beta-6 code and apply the change we've done locally to generate a patch. 

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Closed: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Dennis Lundberg (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dennis Lundberg closed MSITE-129.
---------------------------------

    Resolution: Fixed

Thanks to Per for testing and John for the clarifications.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Dennis Lundberg
>            Priority: Minor
>             Fix For: 2.0
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "John Allen (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_103349 ] 

John Allen commented on MSITE-129:
----------------------------------

Matt,

In regards to your structure. We are a massive information services company and as such our 'apps' are produced by accounts and project teams in isolation of each other and with lifecycles measured in years and 10s of years and as such each one of our account/project 'apps' (itself consisting of multiple maven modules) needs its own 'management' POM to setup where its SVN, CI, issue tracker and distro management locations are, define plugin versions, and all that good stuff. The only way to do this and have it used by all of the apps modules is via inheritance. I guess I world is much more akin to a sourceforge in as much as although we're one company we have many very independent projects and the only way they can share their per-project settings amongst their modules is via inheritance.

Horses for courses really.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-7
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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

        

[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Kenney Westerhof (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=comments#action_65334 ] 

Kenney Westerhof commented on MSITE-129:
----------------------------------------

Hi John,

You're quite right. In effect, there are 2 trees, which usually overlap: the parent->child(module) tree, and the child->parent tree. 
The result is that if you see them both as 1 structure you get a graph, not a tree.

At first I wasn't sure of your concern, since I just want a set of links from any project referring to its children. You wouldn't need to access the child
at all, you only need to know it's name in order to create correct links.

But this goes wrong as soon as the <module> name does not match the module's artifactId, so I now understand why the reactor
is consulted to find the same relation but in the other direction. This suffers from the same problem - a parent-(module)->child relation
does not imply a child-(parent)->parent relation. There's really no way to find a child project just by scanning the modules..

So, how to proceed? A working solution would be to still keep the two types of relationships separate, but specify
the groupId/artifactId instead of just a module name. Another would be to just see the modules definition as a build-time instruction
(in which case it really should be in the <build> section), and the only official relationship would be the <parent> declaration in children.

The reason I have a parent for easy building is that my repository is split up in much the same way as the Maven repository:
for each top level project I have a directory containing trunk/branch/tags, and I have a trunks/ with svn:externals properties to */trunk/.
The trunks/ also contains a pom but that's only used for building all projects. The real parent pom is also versioned in a top level project.
It might be simplest to add the limitation that if you declare a module in project A, then that module MUST declare a <parent> for module A.
On the other hand - the checked-out versions don't have to match at all; project A can be version 1.1, the child declaring a parent relation with
version 1.0. 

Seems like we stumbled on a large shortcoming in the design: you can define a structure that's completely legal in M2 terms, but
when some assumptions (children declare the correct parent, and module names equal artifactId) are not met, strange problems present themselves.
It seems some unsaid 'best practises' are not implemented the same everywhere - the site plugin being an excellent example of this, since it employs
two entirely different strategies depending on the number of projects in the reactor.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>          Key: MSITE-129
>          URL: http://jira.codehaus.org/browse/MSITE-129
>      Project: Maven 2.x Site Plugin
>         Type: Bug

>     Versions: 2.0-beta-5
>     Reporter: Kenney Westerhof
>     Assignee: Kenney Westerhof
>     Priority: Minor
>      Fix For: 2.0

>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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


[jira] Commented: (MSITE-129) modules list empty if modules don't use this project as parent in reactor build

Posted by "Johan Andrén (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MSITE-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=139588#action_139588 ] 

Johan Andrén commented on MSITE-129:
------------------------------------

One more vote about the importance of this issue here.

We have a netbeans-platform application setup like this:

application/
   cluster1/
      module1/
      module2/
   cluster2/
      module3/
      module4/
   common-parent/

where all the maven modules ("clusters", "modules" and "application") share the common-parent containing dependency management. We need to do it this way since the netbeans-maven-plugin only can create an application from project submodules.

If we run site:site on application non-recursive ("mvn -N") this gives us a site for application with each cluster listed as a module. When we run site:site recursively we get a site with no modules listed at all. I'm not 100% sure but it sounds as it is the same problem listed here.

> modules list empty if modules don't use this project as parent in reactor build
> -------------------------------------------------------------------------------
>
>                 Key: MSITE-129
>                 URL: http://jira.codehaus.org/browse/MSITE-129
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>          Components: multi module
>    Affects Versions: 2.0-beta-5
>            Reporter: Kenney Westerhof
>            Assignee: Kenney Westerhof
>            Priority: Minor
>             Fix For: 2.0-beta-8
>
>
> The code in the AbstractSiteRenderingMojo does the following:
> - if it's running in a reactor build (i.e. more than 1 project in the reactor projects) it scans all
> projects to see if it's parent project equals the current project. If so, it's marked as a module.
> - if it's running on a single project, the project.build.modules is consulted and those modules
> are marked as modules.
> I've got a 'fake' root pom, for utility purposes: it lists all projects as modules so that I can easily
> built everything and generate a site. However, this fake root pom is never used as a parent - there's
> a /pom/pom.xml project for that.
> The result of this is that the modules list is empty.
> A workaround is to first run 'mvn site' and then 'mvn site -N'.
> I'm not sure what the correct solution should be - basically now 2 site layouts are implemented:
> - a physical layout where the modules match the <modules> section of the pom, reflecting filesystem layout,
> - a project hierarchy layout based on <parent>
> and one or the other is used depending on wheter the build contains more than 1 project or not.
> My first feeling is that since the tag is called ${modules} (or <menu ref="modules"/>) that
> the site should use the <modules>, not the <parent>. 
> It should also take into consideration, that IF a reactor build is running, it should only use the modules that are also
> in the reactor (so you can use -r -Dmaven.reactor.excludes=.. to generate a site with not all projects in it).
> Thoughts?

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