Pregunta

Tengo un proyecto maven con muchos submódulos y uso el pom principal para controlar los complementos del directorio como se muestra a continuación.

-pom.xml (parent pom)
 +- submodule1
 +- submodule2
 +- src\site\site.xml

por lo tanto src\site\site.xml contiene el menú personalizado como el siguiente

<project>
  ....
  <body>
   <menu name="Overview">
    <item name="Introduction" href="introduction.html"/>
   </menu>
   <menu name="Development">
      <item name="Getting started" href="designenv.html"/>
      <item name="FAQ" href="designfaq.html" />
      <item name="Javadoc" href="apidocs/index.html" />
   </menu>
   <menu ref="modules"/>
   <menu ref="reports"/>
 </body>
</project>

después de correr mvn site:stage en raíz (sugerido de complemento del sitio maven), la página web principal está bien, mientras que la <sub-modules>\index.html no contiene ningún menú (sin información del proyecto ni informe del proyecto)

También me doy cuenta si corro mvn site En los submódulos, index.html no contiene ningún menú a la izquierda, mientras que el html individual existe en un directorio como pmd.html, License.html.

  • ¿Necesito agregar src\site\site.xml ¿En cada submódulo u otra forma mejor?
  • o ¿Hice algo estúpido en pom.xml en algún lugar ?

¿Alguna pista?

[Actualización] también me gusta para la imagen del banner, si lo configuro en padre así

<bannerLeft>
  <name>edcp</name>
  <src>images/mylogo.png</src>
</bannerLeft>

El sitio para el submódulo que apunta en la dirección incorrecta, en html, se ve así ..\..\<submodule>, no ..\images\mylogo.png

¿Fue útil?

Solución

Si desea evitar copiar el sitio.xml a cada submódulo manualmente, luego use el Maven-Resources-Plugin podría ser una solución: agregue esto a su padre POM:

[...]
<properties>
    <site.basedir>${project.basedir}</site.basedir>
</properties>
[...]
<build> 
 <plugins>
  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
      <execution>
        <id>copy-sitedescriptor</id>
        <!-- fetch site.xml before creating site documentation -->
        <phase>pre-site</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/src/site/</outputDirectory>
          <resources>          
            <resource>                  
              <directory>${site.basedir}/src/site/</directory>
              <includes>
                <include>**/site.xml</include>
              </includes>
            </resource>
          </resources>              
        </configuration>            
      </execution>
    </executions>
   </plugin>        

y esto a cada uno de los Poms de su submódulo:

<properties>
    <site.basedir>${project.parent.basedir}</site.basedir>
</properties>

Luego, el descriptor del sitio se copiará del proyecto principal a cada submodule (sobrescribiendo los descriptores existentes) antes de que se cree la documentación del sitio.Tenga en cuenta que el directorio SRC / sitio debe existir en cada submódulo para hacer este trabajo.No es una solución perfecta, pero tal vez sea mejor que un manual completo.

Otros consejos

Es posible heredar menús del padre. site.xml usando el inherit atributo.

P.ej,

<project>
  ....
  <body>
   <menu name="Overview" inherit="top">
    <item name="Introduction" href="introduction.html"/>
   </menu>
   <menu name="Development" inherit="top">
      <item name="Getting started" href="designenv.html"/>
      <item name="FAQ" href="designfaq.html" />
      <item name="Javadoc" href="apidocs/index.html" />
   </menu>
   <menu ref="modules"/>
   <menu ref="reports"/>
 </body>
</project>

Ahora tanto el Overview y Development Los menús serán heredados por todos los subproyectos.

Consulte la documentación de Maven para sitios de múltiples módulos para obtener más detalles.http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#Inheritance

Me tropezó con esto cuando intentas generar un sitio Multi Module Maven y solo quería compartir una solución.

en su padre POM ADD

<siteDirectory>${session.executionRootDirectory}/src/site</siteDirectory>

a la configuración del plugin del sitio Maven.

Eso debería decirle a todos los Poms del niño que obtengan su sitio.xml desde el directorio principal.

Estoy usando un pequeño script de Python que crea todos los archivos site.xml de una plantilla. Aquí está la GIST .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top