Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

maven site plugin not deploying subprojects in a multimodule project or generating index.html

I have a multimodule project that I want to deploy a site for, but it seems like my site deployment configuration is not being inherited by subproject child modules.

  • parent
    • moduleA
    • moduleB

On the filesystem they are located relative to each other:

/parent/
/moduleA/
/moduleB/

When I run:

mvn site-deploy -P documentation

My parent project is deployed properly to:

  • scp://devServer/documentation/webwars/

But none of the subprojects like moduleA or moduleB is deployed there as I'd expect if child modules inherit parent distributionManagement:

  • scp://devServer/documentation/webwars/moduleA
  • scp://devServer/documentation/webwars/moduleB

Here's my parent pom.xml, I removed some extraneous details and report plugins (I included my javadoc plugin which is a bit funky using APIViz and aggregate to ensure aggregate parent javadocs and child javadocs use APIViz properly.):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                      http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.webwars</groupId>
    <artifactId> parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>parent</name>
    <distributionManagement>
        <site>
            <id>webwarsDev.website</id>
            <url>scp://devServer/documentation/webwars/</url>
        </site>         
    </distributionManagement>
    <modules>
        <module>../moduleA</module>
        <module>../moduleB</module>
    </modules>
    <profiles>
        <profile>
            <id>documentation</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-pmd-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>verify_pmd</id>
                                    <phase>verify</phase>
                                    <goals>
                                        <goal>pmd</goal>
                                    </goals>
                                    <configuration>
                                        <linkXref>true</linkXref>
                                        <minimumTokens>20</minimumTokens>
                                        <targetJdk>1.6</targetJdk>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>                        

                    </plugins>
                </pluginManagement>
            </build>
            <reporting>
                <plugins>
                  <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>2.1.2</version>
                    <reportSets>
                      <reportSet>
                        <reports>
                          <report>project-team</report>
                          <report>cim</report>
                          <report>scm</report>
                        </reports>
                      </reportSet>
                    </reportSets>
                  </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.6.1</version>
                        <configuration>
                            <!-- Default configuration for all reports -->
                            <detectOfflineLinks>true</detectOfflineLinks>
                            <!--
                                <detectLinks>true</detectLinks>
                            -->
                            <detectJavaApiLink>true</detectJavaApiLink>
                            <linksource>true</linksource>
                            <useStandardDocletOptions>true</useStandardDocletOptions>
                            <charset>UTF-8</charset>
                            <encoding>UTF-8</encoding>
                            <docencoding>UTF-8</docencoding>
                            <breakiterator>true</breakiterator>
                            <version>true</version>
                            <author>true</author>
                            <keywords>true</keywords>
                            <minmemory>128m</minmemory>
                            <maxmemory>512m</maxmemory>
                         <doclet>org.jboss.apiviz.APIviz</doclet>
                                    <docletArtifact>
                                        <groupId>org.jboss.apiviz</groupId>
                                        <artifactId>apiviz</artifactId>
                                        <version>1.3.0.GA</version>
                                    </docletArtifact>
                                    <additionalparam> 
                                    -charset UTF-8
                                    -docencoding UTF-8 
                                    -version 
                                    -author
                                    -breakiterator 
                                    -linksource 
                                    -sourcetab 4
                                    -windowtitle "${project.name} ${project.version} API Reference"
                                    -doctitle "${project.name} ${project.version} API Reference"
                                    -bottom "Copyright © ${project.inceptionYear}-Present ${project.organization.name}. All Rights Reserved." 
                                    -link    http://java.sun.com/javase/6/docs/api/

                                    </additionalparam>                             
                        </configuration>
                        <reportSets>
                            <reportSet>
                                <id>non-aggregate</id>
                                <configuration>
                                    <!-- Specific configuration for the non aggregate report -->
                                    <doclet>org.jboss.apiviz.APIviz</doclet>
                                    <docletArtifact>
                                        <groupId>org.jboss.apiviz</groupId>
                                        <artifactId>apiviz</artifactId>
                                        <version>1.3.0.GA</version>
                                    </docletArtifact>
                                    <additionalparam> 
                                    -charset UTF-8
                                    -docencoding UTF-8 
                                    -version 
                                    -author
                                    -breakiterator 
                                    -linksource 
                                    -sourcetab 4
                                    -windowtitle "${project.name} ${project.version} API Reference"
                                    -doctitle "${project.name} ${project.version} API Reference"
                                    -bottom "Copyright © ${project.inceptionYear}-Present ${project.organization.name}. All Rights Reserved." 
                                    -link    http://java.sun.com/javase/6/docs/api/
                                    -sourceclasspath ${project.build.outputDirectory} 
                                    </additionalparam>              
                                </configuration>
                            <reports>
                                <report>javadoc</report>
                            </reports>
                          </reportSet>
                          <reportSet>
                            <id>aggregate</id>
                            <configuration>
                              <!-- Specific configuration for the aggregate report -->
                                  <doclet>org.jboss.apiviz.APIviz</doclet>
                                    <docletArtifact>
                                        <groupId>org.jboss.apiviz</groupId>
                                        <artifactId>apiviz</artifactId>
                                        <version>1.3.0.GA</version>
                                    </docletArtifact>
                                    <additionalparam> 
                                    -charset UTF-8
                                    -docencoding UTF-8 
                                    -version 
                                    -author
                                    -breakiterator 
                                    -linksource 
                                    -sourcetab 4
                                    -windowtitle "${project.name} ${project.version} API Reference"
                                    -doctitle "${project.name} ${project.version} API Reference"
                                    -bottom "Copyright © ${project.inceptionYear}-Present ${project.organization.name}. All Rights Reserved." 
                                    -link    http://java.sun.com/javase/6/docs/api/

                                    </additionalparam>                                
                            </configuration>
                            <reports>
                              <report>aggregate</report>
                            </reports>
                          </reportSet>
                        </reportSets>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jxr-plugin</artifactId>
                        <configuration>
                            <linkJavadoc>true</linkJavadoc>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>cobertura-maven-plugin</artifactId>
                        <configuration>
                            <formats>
                                <format>xml</format>
                                <format>html</format>
                            </formats>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>findbugs-maven-plugin</artifactId>
                        <version>2.1</version>
                    </plugin>
                </plugins>
            </reporting>
        </profile>
    </profiles>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>                
            </plugins>
        </pluginManagement>
    </build>
</project>

I've tried defining explicit distributionManagement in each subproject module, which deploy properly except for some reason the child subproject site won't have an index.html??

I don't have any src/site/ files like src/site/site.xml or src/site/apt/index.apt.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.webwars</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../parent</relativePath>
    </parent>
    <groupId>com.webwars</groupId>
    <artifactId>moduleA</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>moduleA</name>
    <distributionManagement>
        <site>
            <id>webwarsDev.website</id>
            <url>scp://devServer/documentation/webwars/moduleA</url> 
        </site>
    </distributionManagement>
like image 268
Dougnukem Avatar asked Nov 11 '09 21:11

Dougnukem


People also ask

Where do you place static HTML you wish to Utilise in your site generation?

Put your static pages in the resources directory, ${basedir}/src/site/resources.

How do you generate a site for a project with Maven?

To generate a site, just run mvn site:site or mvn site. To view the generated site on a local machine, run mvn site:run. This command will deploy the site to a Jetty web server at the address localhost:8080.

Can a Maven project have multiple pom files?

Yes you can use Maven Profiles to manage this. Obviously you can tweak this approach to suit your needs however works best.

What is Maven project Info reports Plugin?

The Maven Project Info Reports plugin is used to generate reports information about the project.


1 Answers

I may be wrong but I think that you need to configure the maven-project-info-reports-plugin to generate the "index" report which is currently not the case (you've configured it to generate project-team, cim and scm reports only). You need to add the index report:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-project-info-reports-plugin</artifactId>
  <version>2.1.2</version>
  <reportSets>
    <reportSet>
      <reports>
        <report>index</report>
        <report>project-team</report>
        <report>cim</report>
        <report>scm</report>
      </reports>
    </reportSet>
  </reportSets>
</plugin>
like image 144
Pascal Thivent Avatar answered Nov 15 '22 05:11

Pascal Thivent