2011-05-12 17 views
7

Tengo un proyecto Maven con una gran cantidad de sub-módulos, y lo uso pom padres para controlar los plugins del directorio, como a continuaciónsitio de experto para el módulo de múltiples

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

lo tanto src\site\site.xml contiene el menú personalizado, como a continuación

<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 corro mvn site:stage en la raíz (sugerido de maven site plugin), la página web de los padres está muy bien, mientras que el <sub-modules>\index.html no contiene ningún menú (sin proyecto información & informe del proyecto)

También noto si funciono mvn site previstos en los módulos, el index.html no contiene ningún menú en la izquierda, mientras que el HTML individuales existe en el directorio como pmd.html, license.html

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

¿Alguna sugerencia?

[Actualización] también como imagen de banner para, si fijo en la matriz como ésta

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

El sitio para el sub-módulo con puntos a una dirección equivocada, en HTML, se parece a ..\..\<submodule>, no ..\images\mylogo.png

+0

Si agrego site.xml simple debajo de cada submódulo, funciona bien ahora –

+0

Puede responder a su propia pregunta y seleccionarla como correcta. De esta manera, sería visible desde las páginas de resumen que la pregunta tiene una solución. – Jan

+0

no es una buena solución como esperaba, y todavía quiero tener personas para darme una mejor respuesta, y este sistema recomienda no responder mi propia pregunta. –

Respuesta

3

Si desea evitar copiar el site.xml a cada submódulo de forma manual, a continuación, utilizando 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 sus poms del submódulo:

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

A continuación, el descriptor sitio se copiarán desde el proyecto principal a cada submódulo (sobrescribir los descriptores existentes) antes de crear la documentación del sitio. Tenga en cuenta que el directorio src/site debe existir en cada submódulo para que esto funcione. No es una solución perfecta, pero tal vez mejor que una manual completa.

+0

Posiblemente reemplazado por la respuesta aceptada aquí: http://stackoverflow.com/questions/10848715/multi- module-pom-creating-a-site-that-works – Stewart

0

Estoy usando una pequeña secuencia de comandos de Python que crea todos los archivos site.xml de una plantilla. Here is the gist.

3

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

por ejemplo,

<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 los Overview y Development menús será heredado por todos los sub-proyectos.

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

1

me encontré con este cuando se trata de generar un sitio de múltiples módulo experto y sólo quería compartir una solución que se me ocurrió.

En su Pom padres añadir

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

a la configuración del plugin sitio experta.

Eso debería decirles a todos los poms secundarios que obtengan su site.xml del directorio padre.

+0

Sin embargo, esto ignorará por completo lo que sea específico para los módulos secundarios. Primero, también pensé que esta sería la solución, pero hace algo ligeramente diferente. –

Cuestiones relacionadas