8

多くのサブモジュールを含むMavenプロジェクトがあり、親pomを使用して、以下のようなディレクトリのプラグインを制御します

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

したがってsrc\site\site.xml、以下のようなカスタマイズされたメニューが含まれています

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

mvn site:stageルートで実行した後( Maven サイト プラグインから推奨)、親 Web ページは問題あり<sub-modules>\index.htmlませんが、メニューは含まれていません (プロジェクト情報とプロジェクト レポートはありません)。

またmvn site、サブモジュールの下で実行すると、index.html には左側にメニューが含まれていないことに気付きますが、個々の html は pmd.html、license.html などのディレクトリに存在します。

  • src\site\site.xml各サブモジュールまたは他のより良い方法を追加する必要がありますか?
  • または私はpom.xmlどこかで愚かなことをしましたか?

ヒントはありますか?

【更新】バナー画像も同様、親に設定するとこんな風に

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

間違った方向へのポイントを含むサブモジュールのサイトは、HTML では、のように見えますが、そう..\..\<submodule>ではありません..\images\mylogo.png

4

4 に答える 4

5

属性site.xmlを使用して、親からメニューを継承することができます。inherit

例えば、

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

Overviewこれで、とメニューの両方がDevelopmentすべてのサブプロジェクトに継承されます。

詳細については、マルチモジュール サイトの Maven ドキュメント ( http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#Inheritance ) を参照してください。

于 2015-01-07T12:15:00.077 に答える
5

各サブモジュールに手動で site.xml をコピーすることを避けたい場合は、maven-resources-pluginを使用することが回避策になる可能性があります。これを親 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>        

そして、これを各サブモジュールのpomに:

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

次に、サイトのドキュメントが作成される前に、サイト記述子が親プロジェクトから各サブモジュールにコピーされます (既存の記述子を上書きします)。これを機能させるには、各サブモジュールに src/site ディレクトリが存在する必要があることに注意してください。完全な解決策ではありませんが、完全な手動の解決策よりも優れているかもしれません。

于 2011-05-19T09:11:29.930 に答える
0

site.xmlテンプレートからすべてのファイルを作成する小さな Python スクリプトを使用しています。ここに要点があります。

于 2013-03-11T09:50:09.987 に答える