Domanda

Ho un progetto MAVEN con un sacco di sotto-moduli e utilizzo POM POM per controllare i plug-in della directory come sotto

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

Pertanto src\site\site.xml contiene il menu personalizzato come sotto

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

Dopo aver eseguito mvn site:stage in root (suggerito da plugin del sito di Maven ), la pagina Web principale va bene, mentre il <sub-modules>\index.html non contiene alcun menu (nessuna informazione del progetto e rapporto del progetto)

Avviso anche se eseguo mvn site sotto moduli sotto moduli, Index.html non contiene alcun menu a sinistra, mentre il singolo html esiste nella directory come PMD.HTML, LICENY.HTML

È stato utile?

Soluzione

Se si desidera evitare di copiare il sito.xml a ciascun sottomodulo manualmente, quindi usando il maven-resources-plugin potrebbe essere una soluzione alternativa: aggiungi questo al tuo genitore 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>        
.

E questo a ciascuno dei tuoi POMMODULE POMS:

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

Quindi il descrittore del sito verrà copiato dal progetto principale a ciascun sottomodulo (sovrascrittura dei descrittori esistenti) prima che venga creato la documentazione del sito.Si noti che la directory SRC / Site deve esistere in ciascun sottomodulo per rendere questo lavoro.Non è una soluzione perfetta, ma forse meglio di un manuale completo.

Altri suggerimenti

È possibile ereditare i menu dal genitore site.xml utilizzando l'attributo inherit.

E.G,

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

Ora sia i menu Overview e Development saranno ereditati da tutti i sottogruppi.

Vedere la documentazione MAVEN per i siti multi-module per maggiori dettagli, http://maven.apache.org/plugins/maven-site-plugin / esempi / multimodule.html # ereditance

Mi sono imbattuto in questo modo quando si cerca di generare un sito Multi Module Maven e volevo solo condividere una soluzione con cui ho trovato.

nel tuo genitore POM ADD

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

alla configurazione del plugin del sito di Maven.

Questo dovrebbe dire a tutti i figli Poms di ottenere il loro sito.xml dalla directory principale.

Sto usando un piccolo script Python che crea tutti i file site.xml da un modello. qui è il GIST .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top