How to fix broken sub-module links in Maven Site for multi-module project?

Justin picture Justin · Feb 21, 2014 · Viewed 11.2k times · Source

I am creating a Maven Site for a 3-level multi-module maven project which is structured like this:

parent 
    child-a
        child-b

I am running mvn site site:stage

The Maven site module link works for child-a but is broken for the nested module child-b. (The link to child-b does work if I first click the link to child-a.)

See for yourself here: http://justinhrobbins.github.io/multi-module-site-report-test/site/0.0.1-SNAPSHOT/

I have the following in my parent pom:

<distributionManagement>
    <site>
        <id>site</id>
        <name>site</name>
        <url>scp://www.yourcompany.com/www/docs/project/</url>
    </site>
</distributionManagement>

What needs to be done in order for the links to work for all the project modules in this Maven site report? (i know the <url> is not real, for the moment i want it to work in stage)

I added a simple test case project to Github that demonstrates the issue: https://github.com/justinhrobbins/multi-module-site-report-test

EDIT: I am using the following plugin versions:

<maven.site.plugin.version>3.3</maven.site.plugin.version>   
<maven.project.info.reports.plugin.version>2.7</maven.project.info.reports.plugin.version>

Answer

Justin picture Justin · Feb 23, 2014

I was able to fix this issue by adding a <url> element to the parent pom. I don't understand why that would fix it though.

Prior to adding the <url> element I saw this in the log after running mvn site site:stage

[WARNING] No project URL defined - decoration links will not be relativized!

After adding the element and rerunning the Maven command, the log now shows this:

[INFO] Relativizing decoration links with respect to project URL:

The module links in the Maven site report are now working.

The master branch of the sample github project has been updated with the solution

https://github.com/justinhrobbins/multi-module-site-report-test

More info on the purpose of the <url> element can be found here: https://maven.apache.org/plugins/maven-site-plugin/faq.html#Use_of_url