Frage

Ich habe ein Maven-Projekt mit vielen Untermodulen und verwende übergeordnetes pom, um die Plugins im Verzeichnis wie folgt zu steuern

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

daher src\site\site.xml enthält das angepasste Menü wie unten

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

Nachdem ich gelaufen bin mvn site:stage in root (vorgeschlagen von maven-Site-Plugin), die übergeordnete Webseite ist in Ordnung, während die <sub-modules>\index.html enthält kein Menü (keine Projektinfo & Projektbericht)

Auch merke ich, wenn ich renne mvn site unter Untermodule der Index.html enthält links kein Menü, während das einzelne HTML in einem Verzeichnis wie pmd vorhanden ist.html, Lizenz.HTML

  • Muss ich hinzufügen src\site\site.xml in jedem Untermodul oder auf andere bessere Weise?
  • oder habe ich etwas Dummes gemacht pom.xml irgendwo ?

Irgendwelche Hinweise ?

[update] mag auch für Bannerbild, wenn ich in Eltern so setze

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

Die Site für das Untermodul mit Hinweisen in die falsche Richtung in HTML sieht folgendermaßen aus ..\..\<submodule>, nicht ..\images\mylogo.png

War es hilfreich?

Lösung

Wenn Sie das Kopieren der Site vermeiden möchten.xml zu jedem Submodul manuell, dann mit dem maven-Ressourcen-plugin könnte ein Workaround sein:Fügen Sie dies Ihrem Eltern-Pom hinzu:

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

und das zu jedem Ihrer Submodul-Poms:

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

Anschließend wird der Site-Deskriptor vom übergeordneten Projekt in jedes Submodul kopiert (wobei vorhandene Deskriptoren überschrieben werden), bevor die Site-Dokumentation erstellt wird.Bitte beachten Sie, dass das Verzeichnis src /site in jedem Submodul vorhanden sein muss, damit dies funktioniert.Keine perfekte Lösung, aber vielleicht besser als eine vollständige manuelle.

Andere Tipps

Es ist möglich, Menüs vom übergeordneten Element zu erben site.xml durch die Verwendung der inherit Attribut.

Z.B,

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

Nun sind sowohl die Overview und Development menüs werden von allen Unterprojekten geerbt.

Weitere Informationen finden Sie in der Maven-Dokumentation für Websites mit mehreren Modulen, http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#Inheritance

Ich bin darüber gestolpert, als ich versucht habe, eine Maven-Site mit mehreren Modulen zu erstellen, und wollte nur eine Lösung teilen, die ich mir ausgedacht habe.

Fügen Sie in Ihrem übergeordneten Pom hinzu

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

zur Konfiguration des Maven Site Plugins.

Das sollte allen untergeordneten Poms sagen, dass sie ihre Site bekommen sollen.xml aus dem übergeordneten Verzeichnis.

Ich verwende ein kleines Python-Skript, das alle erstellt site.xml dateien aus einer Vorlage. Hier ist das Wesentliche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top