質問

私は多くのサブモジュールを持つ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 サブモジュールの下で、インデックス。個々のhtmlはpmdのようなディレクトリに存在しますが、htmlには左にメニューが含まれていません。html、ライセンス。html

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

何かヒントはありますか?

[更新]バナー画像のように、私はこのような親に設定した場合

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

Htmlでは、間違った方向を指すサブモジュールのサイトは次のようになります ..\..\<submodule>, 、ない ..\images\mylogo.png

役に立ちましたか?

解決

サイトのコピーを避けたい場合。各サブモジュールへの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ディレクトリが各サブモジュールに存在する必要があることに注意してください。完璧な解決策ではありませんが、完全な手動の解決策よりも良いかもしれません。

他のヒント

親からメニューを継承することは可能です site.xml を使用することにより、 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>

今、両方の OverviewDevelopment メニューはすべてのサブプロジェクトに継承されます。

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

私はマルチモジュールのmavenサイトを生成しようとしたときにこれに遭遇し、私が思いついた解決策を共有したかっただけです。

あなたの親のpomに追加

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

mavenサイトプラグインの設定に。

それは自分のサイトを取得するために、すべての子pomsを伝える必要があります。親ディレクトリからのxml。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top