Question

J'ai un projet Maven avec beaucoup de sous-modules, et j'utilise des Pom Pom pour contrôler les plugins le répertoire comme ci-dessous

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

Donc src\site\site.xml Contient le menu personnalisé comme ci-dessous

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

Après avoir couru mvn site:stage en racine (suggéré de Plugin de site Maven), la page Web parent est bien, tandis que le <sub-modules>\index.html ne contient aucun menu (pas d'informations de projet et de rapport de projet)

Aussi je remarque si je cours mvn site En vertu des sous-modules, l'index.html ne contient aucun menu à gauche, tandis que le HTML individuel existe dans le répertoire comme pmd.html, licence.html

  • Dois-je ajouter src\site\site.xml dans chaque sous-module ou autre meilleure façon?
  • ou ai-je fait quelque chose de stupide pom.xml quelque part ?

Des indices?

MISE À JOUR] Aussi à l'image de bannière, si je mets dans des parents comme celui-ci

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

Le site de sous-module avec des points dans la mauvaise direction, en html, ressemble à ..\..\<submodule>, ne pas ..\images\mylogo.png

Était-ce utile?

La solution

Si vous souhaitez éviter de copier le site.xml à chaque sous-mo-module manuellement, alors en utilisant le Maven-Resources-Plugin Cela pourrait être une solution de contournement: ajoutez ceci à votre parent:

[...]
<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>        

Et ceci à chacun de vos poms sous-module:

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

Ensuite, le descripteur du site sera copié du projet parent à chaque sous-module (écrasant les descripteurs existants) avant la création de la documentation du site. Veuillez noter que le répertoire SRC / Site doit exister dans chaque sous-module pour que cela fonctionne. Pas une solution parfaite, mais peut-être mieux qu'un manuel complet.

Autres conseils

Il est possible d'hériter des menus du parent site.xml en utilisant le inherit attribut.

Par exemple,

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

Maintenant les deux Overview et Development Les menus seront hérités par tous les sous-projets.

Voir la documentation Maven pour les sites multi-modules pour plus de détails,http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#inheritance

Je suis tombé sur cela lorsque j'essaie de générer un site Maven multi-modules et je voulais juste partager une solution que je suis venue.

Dans votre parent, ajoutez

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

à la configuration du plugin du site Maven.

Cela devrait indiquer à tous les enfants de POMS d'obtenir leur site.xml à partir du répertoire parent.

J'utilise un petit script python qui crée tout le site.xml fichiers d'un modèle. Voici l'essentiel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top