マルチモジュール用mavenサイト
-
12-11-2019 - |
質問
私は多くのサブモジュールを持つ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>
今、両方の Overview
と Development
メニューはすべてのサブプロジェクトに継承されます。
詳細については、マルチモジュールサイトの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
テンプレートからのファイル。 ここに要点があります.