我有一个包含大量子模块的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>
我在root中运行mvn site:stage
(从maven site plugin建议)后,父网页很好,而<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
答案 0 :(得分:4)
如果您想避免手动将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>
和你的每个子模块poms:
<properties>
<site.basedir>${project.parent.basedir}</site.basedir>
</properties>
然后,在创建站点文档之前,站点描述符将从父项目复制到每个子模块(覆盖现有描述符)。请注意,src / site目录必须存在于每个子模块中才能使其工作。不是一个完美的解决方案,但可能比一个完整的手动解决方案更好。
答案 1 :(得分:4)
可以使用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
答案 2 :(得分:2)
我在尝试生成一个多模块maven网站时偶然发现了这一点,并且想要分享我想出的解决方案。
在您的父pom中添加
<siteDirectory>${session.executionRootDirectory}/src/site</siteDirectory>
到maven网站插件配置。
这应该告诉所有子poms从父目录获取他们的site.xml。
答案 3 :(得分:0)
我正在使用一个小的Python脚本来创建模板中的所有site.xml
文件。 Here is the gist